claude-code-conductor 2.2.0__tar.gz → 2.3.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.2.0 → claude_code_conductor-2.3.0}/.claude/agents/code-reviewer.md +2 -1
  2. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/security-reviewer.md +2 -1
  3. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/tester.md +0 -1
  4. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/wt_developer.md +3 -3
  5. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/wt_systematic-debugger.md +3 -3
  6. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/wt_tester.md +3 -3
  7. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/consolidate_memory.py +13 -13
  8. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/post_tool.py +1 -1
  9. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/pre_tool.py +2 -2
  10. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/record_review_decision.py +1 -1
  11. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/record_tier_outcome.py +2 -2
  12. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/review_hint_inject.py +1 -1
  13. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/schema.sql +7 -9
  14. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/select_tier.py +4 -4
  15. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/session_start.py +1 -1
  16. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/session_utils.py +1 -1
  17. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/subagent_log.py +4 -4
  18. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/rules/code-review-checklist.md +3 -1
  19. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/rules/security-review-checklist.md +3 -1
  20. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/dev-workflow/SKILL.md +10 -10
  21. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/develop/SKILL.md +0 -7
  22. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/init-session/SKILL.md +3 -3
  23. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/parallel-agents/SKILL.md +3 -12
  24. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.gitignore +0 -3
  25. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/CHANGELOG.md +88 -0
  26. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/PKG-INFO +1 -1
  27. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/__init__.py +1 -1
  28. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_tier.py +4 -4
  29. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/db.py +5 -5
  30. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_consolidate_memory.py +5 -5
  31. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_post_tool.py +1 -1
  32. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_pre_tool.py +4 -4
  33. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_record_tier_outcome.py +1 -1
  34. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_review_hint_inject.py +1 -1
  35. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_select_tier.py +2 -2
  36. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_select_tier_escalation.py +1 -1
  37. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_session_utils.py +1 -1
  38. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_similarity_boost.py +1 -1
  39. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_subagent_log.py +4 -4
  40. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_cli_tier.py +1 -1
  41. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/CLAUDE.md +0 -0
  42. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/architect.md +0 -0
  43. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/developer.md +0 -0
  44. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/doc-writer.md +0 -0
  45. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/interviewer.md +0 -0
  46. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/planner.md +0 -0
  47. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/project-setup.md +0 -0
  48. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/agents/systematic-debugger.md +0 -0
  49. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/docs/settings.json.md +0 -0
  50. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/permission_handler.py +0 -0
  51. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/pre_compact.py +0 -0
  52. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/restore_session.py +0 -0
  53. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/session_stop.py +0 -0
  54. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/statusline.py +0 -0
  55. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/stop.py +0 -0
  56. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/hooks/worktree_guard.py +0 -0
  57. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/memory/.gitkeep +0 -0
  58. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/permission_rules.json +0 -0
  59. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/rules/promoted/index.md +0 -0
  60. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/settings.json +0 -0
  61. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/code-review/SKILL.md +0 -0
  62. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/doc/SKILL.md +0 -0
  63. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/extract-lib/SKILL.md +0 -0
  64. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/mcp-config/SKILL.md +0 -0
  65. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/pattern-status/SKILL.md +0 -0
  66. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  67. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  68. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  69. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/setup/SKILL.md +0 -0
  70. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/start/SKILL.md +0 -0
  71. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/skills/task-routing/SKILL.md +0 -0
  72. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/.claude/state/.gitkeep +0 -0
  73. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/LICENSE +0 -0
  74. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/README.md +0 -0
  75. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/hatch_build.py +0 -0
  76. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/pyproject.toml +0 -0
  77. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/__main__.py +0 -0
  78. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/_excludes.py +0 -0
  79. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/_terminal.py +0 -0
  80. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli.py +0 -0
  81. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_doctor.py +0 -0
  82. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_init.py +0 -0
  83. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_list.py +0 -0
  84. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_plan.py +0 -0
  85. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/cli_update.py +0 -0
  86. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/paths.py +0 -0
  87. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/src/c3/plan_validator.py +0 -0
  88. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/__init__.py +0 -0
  89. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/conftest.py +0 -0
  90. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/__init__.py +0 -0
  91. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_permission_handler.py +0 -0
  92. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  93. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_planner_check.py +0 -0
  94. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_restore_session.py +0 -0
  95. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_session_start.py +0 -0
  96. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_session_stop.py +0 -0
  97. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  98. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_statusline.py +0 -0
  99. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  100. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_sync_check.py +0 -0
  101. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/hooks/test_template_guard.py +0 -0
  102. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/skills/__init__.py +0 -0
  103. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
  104. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
  105. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
  106. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/skills/test_task_routing_skill.py +0 -0
  107. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_cli_init.py +0 -0
  108. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_cli_list.py +0 -0
  109. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_cli_plan.py +0 -0
  110. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_docstring_consistency.py +0 -0
  111. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_excludes.py +0 -0
  112. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_paths.py +0 -0
  113. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_plan_validator.py +0 -0
  114. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_pre_compact.py +0 -0
  115. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_pre_tool_hook.py +0 -0
  116. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_precompact_additional.py +0 -0
  117. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_precompact_toctou_fixes.py +0 -0
  118. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_session_utils_additional.py +0 -0
  119. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_statusline.py +0 -0
  120. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_stop_additional.py +0 -0
  121. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_stop_hook.py +0 -0
  122. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_stop_precompact_fixes.py +0 -0
  123. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_sync_template_stop.py +0 -0
  124. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_template_pre_tool_hook.py +0 -0
  125. {claude_code_conductor-2.2.0 → claude_code_conductor-2.3.0}/tests/test_worktree_guard.py +0 -0
@@ -47,7 +47,8 @@ tools:
47
47
 
48
48
  **During:**
49
49
  - 指摘は重大度(High / Medium / Low)で分類する
50
- - **指摘ごとに該当する checklist_id を `[CR-XX-NNN]` 形式で併記する**(`.claude/rules/code-review-checklist.md` の各項目に付与済み)。F-001 レビュー判断ヒント機能の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
50
+ - **指摘ごとに該当する checklist_id を `[CR-XX-NNN]` 形式で併記する**(`.claude/rules/code-review-checklist.md` の各項目に付与済み)。review-hint(レビュー判断ヒント機能)の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
51
+ - **該当 ID がない場合は `[CR-NEW]` で出す**(チェックリスト追加候補として扱う)。無理やり近い既存 ID にマッピングしないこと。review-hint の照合精度が落ち、チェックリストの成長機会も失われるため
51
52
  - 良い実装は明示的に記録する(削除しないよう伝える)
52
53
  - 修正必須と推奨の2段階で提示する
53
54
 
@@ -48,7 +48,8 @@ SQLインジェクション・XSS・認証認可・秘密情報漏洩などの
48
48
 
49
49
  **During:**
50
50
  - 指摘は深刻度(Critical / High / Medium / Low)で分類する
51
- - **指摘ごとに該当する checklist_id を `[SR-XX-NNN]` 形式で併記する**(`.claude/rules/security-review-checklist.md` の各項目に付与済み)。F-001 レビュー判断ヒント機能の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
51
+ - **指摘ごとに該当する checklist_id を `[SR-XX-NNN]` 形式で併記する**(`.claude/rules/security-review-checklist.md` の各項目に付与済み)。review-hint(レビュー判断ヒント機能)の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
52
+ - **該当 ID がない場合は `[SR-NEW]` で出す**(チェックリスト追加候補として扱う)。無理やり近い既存 ID にマッピングしないこと。review-hint の照合精度が落ち、チェックリストの成長機会も失われるため
52
53
  - 悪用シナリオを具体的に記述して再現可能な形で報告する
53
54
  - 修正方法の例を提示する
54
55
 
@@ -59,7 +59,6 @@ tools:
59
59
 
60
60
  ## Tools & Constraints
61
61
  制限: プロダクションコードのソースファイルを編集・書き込みしない
62
- 必須: Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、test-report を `.claude/reports/test-report-{timestamp}.md` に Write すること(出力なしでの終了は不可)
63
62
 
64
63
  ## Related Agents
65
64
  - 上流: planner(plan-report を受け取る)
@@ -3,7 +3,7 @@ name: wt_developer
3
3
  model: sonnet
4
4
  memory: project
5
5
  permissionMode: bypassPermissions
6
- description: 並列 worktree 専用 developer。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は developer.md と同一。permission プロンプトを worktree 内でスキップする。
6
+ description: 並列 worktree 専用 developer。parallel-agents skill が isolation:"worktree" 付きで起動する用途。Stuck Signal のファイル名を task_id ベースにし、permission プロンプトを worktree 内でスキップする。
7
7
  tools:
8
8
  - Read
9
9
  - Write
@@ -73,11 +73,11 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
73
73
 
74
74
  同じ問題に対して3回以上アプローチを変えても解決できない場合:
75
75
 
76
- 1. Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する
77
- 2. `.claude/reports/debug-needed-{timestamp}.md` を Write する。記載内容:
76
+ 1. **必ず** プロンプトで指定された `task_id` をもとに `.claude/reports/debug-needed-{task_id}.md` を Write する(並列実行時の衝突回避 + 親 Claude が後続 wave で systematic-debugger を呼ぶ際に対象 task を特定するため)。記載内容:
78
77
  - 実装しようとしていたこと
79
78
  - 試みたアプローチと失敗の内容(エラーメッセージ・スタックトレース含む)
80
79
  - 現在のコードの状態(関連する箇所の抜粋)
80
+ 2. 保険(task_id がプロンプトから読み取れない異常系のみ): Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、`.claude/reports/debug-needed-{timestamp}.md` を Write する。通常運用ではこの経路に入ってはいけない
81
81
  3. 作業を止めて呼び出し元に返す。コミット・Edit は不要
82
82
 
83
83
  ## Tools & Constraints
@@ -3,7 +3,7 @@ name: wt_systematic-debugger
3
3
  model: sonnet
4
4
  memory: project
5
5
  permissionMode: bypassPermissions
6
- description: 並列 worktree 専用 systematic-debugger。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は systematic-debugger.md と同一。permission プロンプトを worktree 内でスキップする。
6
+ description: 並列 worktree 専用 systematic-debugger。parallel-agents skill が isolation:"worktree" 付きで起動する用途。debug-analysis のファイル名を task_id ベースにし、permission プロンプトを worktree 内でスキップする。
7
7
  tools:
8
8
  - Read
9
9
  - Write
@@ -85,9 +85,9 @@ developer が詰まった問題の根本原因を調査し、debug-analysis-repo
85
85
 
86
86
  ### Step 4: debug-analysis-report の出力
87
87
 
88
- Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得する。
88
+ **必ず** プロンプトで指定された `task_id` をもとに `.claude/reports/debug-analysis-{task_id}.md` に Write する。これは `parallel-agents` skill の `writes` 宣言と一致させ、並列実行時のファイル名衝突を避けるために必須。
89
89
 
90
- `.claude/reports/debug-analysis-{timestamp}.md` を Write する。
90
+ 保険(task_id がプロンプトから読み取れない異常系のみ): Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、`.claude/reports/debug-analysis-{timestamp}.md` を Write する。通常運用ではこの経路に入ってはいけない。
91
91
 
92
92
  レポートの構成:
93
93
 
@@ -3,7 +3,7 @@ name: wt_tester
3
3
  model: sonnet
4
4
  memory: project
5
5
  permissionMode: bypassPermissions
6
- description: 並列 worktree 専用 tester。parallel-agents skill が isolation:"worktree" 付きで起動する用途。本文は tester.md と同一。permission プロンプトを worktree 内でスキップする。
6
+ description: 並列 worktree 専用 tester。parallel-agents skill が isolation:"worktree" 付きで起動する用途。test-report のファイル名を task_id ベースにし、permission プロンプトを worktree 内でスキップする。
7
7
  tools:
8
8
  - Read
9
9
  - Write
@@ -58,13 +58,13 @@ tools:
58
58
  - テスト結果は合格・不合格・スキップの件数を記録する
59
59
 
60
60
  **After:**
61
- - **必ず** Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、`.claude/reports/test-report-YYYYMMDD-HHMMSS.md` に Write して出力する
61
+ - **必ず** プロンプトで指定された `task_id` をもとに `.claude/reports/test-report-{task_id}.md` に Write して出力する。これは `parallel-agents` skill の `writes` 宣言と一致させ、並列実行時のファイル名衝突を避けるために必須
62
+ - 保険(task_id がプロンプトから読み取れない異常系のみ): Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、`.claude/reports/test-report-{timestamp}.md` に Write する。通常運用ではこの経路に入ってはいけない
62
63
  - test-report を Write せずにターンを終了することは禁止
63
64
  - Red フェーズの test-report には失敗理由(機能未実装による失敗であること)を明記する
64
65
 
65
66
  ## Tools & Constraints
66
67
  制限: プロダクションコードのソースファイルを編集・書き込みしない
67
- 必須: Skill ツールで `report-timestamp` を呼び出しタイムスタンプを取得し、test-report を `.claude/reports/test-report-{timestamp}.md` に Write すること(出力なしでの終了は不可)
68
68
 
69
69
  ## Related Agents
70
70
  - 上流: planner(plan-report を受け取る)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Stop hook: consolidate the last N days of session memory into a summary.
3
3
 
4
- F-004 MVP: 過去 N 日分の `.claude/memory/sessions/YYYYMMDD.tmp` から
4
+ memory-consolidation MVP: 過去 N 日分の `.claude/memory/sessions/YYYYMMDD.tmp` から
5
5
  - ``## うまくいったアプローチ``
6
6
  - ``## 試みたが失敗したアプローチ``
7
7
  の各セクションを集約し、`.claude/memory/consolidated_summary.md` に出力する。
@@ -47,7 +47,7 @@ except AttributeError:
47
47
  # 集約ウィンドウ(直近何日分の session ファイルを対象にするか)
48
48
  DEFAULT_WINDOW_DAYS = 7
49
49
 
50
- # F-004 Phase 2-A: archive 機能の生存期間(日)。
50
+ # memory-consolidation Phase 2-A: archive 機能の生存期間(日)。
51
51
  # DEFAULT_WINDOW_DAYS の 3 倍。要約ウィンドウから外れた直後すぐに archive せず、
52
52
  # 過去サマリ再生成のための猶予を確保する。
53
53
  # 環境変数 ``C3_CONSOLIDATE_ARCHIVE_TTL_DAYS`` で上書き可能。
@@ -56,7 +56,7 @@ DEFAULT_ARCHIVE_TTL_DAYS = DEFAULT_WINDOW_DAYS * 3
56
56
  # 出力先(プロジェクトローカル)
57
57
  OUTPUT_FILE_NAME = "consolidated_summary.md"
58
58
 
59
- # F-004 Phase 2-B: 半自動 promotion 候補ログの出力ファイル名
59
+ # memory-consolidation Phase 2-B: 半自動 promotion 候補ログの出力ファイル名
60
60
  PROMOTION_CANDIDATES_FILE_NAME = "promotion-candidates.md"
61
61
 
62
62
  # 候補ログの description 列の最大文字数(表セルの可読性確保)
@@ -65,7 +65,7 @@ _PROMOTION_DESC_MAX_LEN = 80
65
65
  # 候補ログの ID 列の最大文字数(表セル幅を抑える、id が極端に長い場合の保険)
66
66
  _PROMOTION_CID_MAX_LEN = 60
67
67
 
68
- # F-004 Phase 2-C: LLM 要約パラメータ
68
+ # memory-consolidation Phase 2-C: LLM 要約パラメータ
69
69
  # LLM プロンプトに渡す入力テキストの最大文字数(「うまくいった」「失敗した」各セクション合計)
70
70
  _LLM_INPUT_MAX_CHARS = 6000
71
71
  # LLM 応答の最大文字数(超過時は末尾を切り詰めマーカーで上書き)
@@ -97,7 +97,7 @@ LOCK_STALE_SEC = 120
97
97
  # `--llm-only` モードのフラグ
98
98
  LLM_ONLY_FLAG = "--llm-only"
99
99
 
100
- # F-004 消費側: CLAUDE.md @include 用の小ファイル(LLM 要約セクションのみ抽出)。
100
+ # memory-consolidation 消費側: CLAUDE.md @include 用の小ファイル(LLM 要約セクションのみ抽出)。
101
101
  # 毎セッション開始時に Claude のコンテキストに自動注入されるため、
102
102
  # サイズを LLM 要約の最大 4KB 程度に抑える。
103
103
  LLM_SUMMARY_FILE_NAME = "llm_summary.md"
@@ -232,11 +232,11 @@ def write_summary(
232
232
  ) -> bool:
233
233
  """集約サマリを生成して指定パスに書き出す。
234
234
 
235
- F-004 Phase 2-B: ``patterns_path`` が指定された場合、末尾に
235
+ memory-consolidation Phase 2-B: ``patterns_path`` が指定された場合、末尾に
236
236
  「## 昇格候補」サマリセクションを追加する(候補 ID + trust のみ、
237
237
  詳細は ``promotion-candidates.md`` を参照)。
238
238
 
239
- F-004 Phase 2-C: ``enable_llm=True`` の場合、MVP セクションと
239
+ memory-consolidation Phase 2-C: ``enable_llm=True`` の場合、MVP セクションと
240
240
  昇格候補セクションの間に「## LLM 要約」セクションを追加する。
241
241
  LLM 要約は ``build_llm_summary_section()`` の判断でスキップされうる
242
242
  (CLI 不在 / タイムアウト等)。
@@ -299,7 +299,7 @@ def write_summary(
299
299
 
300
300
 
301
301
  # ---------------------------------------------------------------------------
302
- # F-004 Phase 2-B: 半自動 promotion 候補ログ
302
+ # memory-consolidation Phase 2-B: 半自動 promotion 候補ログ
303
303
  # ---------------------------------------------------------------------------
304
304
 
305
305
 
@@ -522,7 +522,7 @@ def _atomic_write(output_path: str, payload: str) -> bool:
522
522
 
523
523
 
524
524
  # ---------------------------------------------------------------------------
525
- # F-004 Phase 2-C: claude --headless LLM 要約
525
+ # memory-consolidation Phase 2-C: claude --headless LLM 要約
526
526
  # ---------------------------------------------------------------------------
527
527
 
528
528
 
@@ -555,7 +555,7 @@ def _build_llm_prompt(
555
555
  if len(failure_text) > half:
556
556
  failure_text = failure_text[:half] + "\n…(略)"
557
557
 
558
- # F-004 Phase 2-C [SR-AI-001 対策]: セッションデータ部分を XML タグで囲み、
558
+ # memory-consolidation Phase 2-C [SR-AI-001 対策]: セッションデータ部分を XML タグで囲み、
559
559
  # プロンプト命令文と明確に分離する。これによりセッション内容に誘導文
560
560
  # ("以下の指示を無視" 等)が混入しても、LLM が命令文と区別しやすくなる。
561
561
  return (
@@ -705,7 +705,7 @@ def build_llm_summary_section(
705
705
 
706
706
 
707
707
  # ---------------------------------------------------------------------------
708
- # F-004 Phase 2-A: archive 機能
708
+ # memory-consolidation Phase 2-A: archive 機能
709
709
  # ---------------------------------------------------------------------------
710
710
 
711
711
 
@@ -718,7 +718,7 @@ def archive_old_sessions(
718
718
  ) -> list[str]:
719
719
  """``ttl_days`` 日以上経過した session.tmp を ``archive_dir`` に移動する。
720
720
 
721
- F-004 Phase 2-A: session ファイルの永久蓄積を防ぐ。
721
+ memory-consolidation Phase 2-A: session ファイルの永久蓄積を防ぐ。
722
722
  同一 FS 内の ``shutil.move`` を使うため rename は基本的にアトミック。
723
723
 
724
724
  Args:
@@ -1078,7 +1078,7 @@ def _llm_only_main() -> int:
1078
1078
  )
1079
1079
  # consolidated_summary.md 書き込み完了後、LLM 要約セクションだけを
1080
1080
  # CLAUDE.md @include 用の llm_summary.md に抽出する(~4KB)。
1081
- # F-004 消費側: Claude が次セッションで自動的にコンテキスト参照する経路。
1081
+ # memory-consolidation 消費側: Claude が次セッションで自動的にコンテキスト参照する経路。
1082
1082
  _write_llm_summary_extract()
1083
1083
  except Exception as exc: # noqa: BLE001
1084
1084
  print(
@@ -7,7 +7,7 @@
7
7
  `.claude/skills/` 配下のファイルを Write / Edit したとき「実際のエージェント
8
8
  動作で確認してください」というリマインダを stdout に出す。
9
9
 
10
- 2. デバッグ出力検出(F-007):
10
+ 2. デバッグ出力検出(post-edit-scan):
11
11
  Write / Edit 完了後に対象ファイルへ console.log / print( / TODO /
12
12
  FIXME / XXX を検出して stderr に警告する。code-review-checklist.md の
13
13
  「不要なデバッグ出力が残っていないか」項目を自動化する位置付け。
@@ -38,7 +38,7 @@ def _is_rm_rf(tokens: list[str], rm_idx: int) -> bool:
38
38
  return has_r and has_f
39
39
 
40
40
 
41
- # 秘密情報パターン (F-006)
41
+ # 秘密情報パターン (secret-scan)
42
42
  # 検出値そのものは警告に含めない(二次漏洩防止)。パターン名のみを返す。
43
43
  # 初期パターンは「= で続く値」を必須とすることで、シェルコメント
44
44
  # (# password reset 等)の誤爆を回避する。
@@ -104,7 +104,7 @@ def main():
104
104
  print(f'[PreToolUse BLOCK] 危険なコマンドをブロックしました: {cmd_preview}', file=sys.stderr)
105
105
  sys.exit(2)
106
106
 
107
- # 秘密情報の代入を検出: ブロック (F-006)
107
+ # 秘密情報の代入を検出: ブロック (secret-scan)
108
108
  # bypass: C3_SKIP_SECRET_CHECK=1 で検出をスキップ(誤爆時の逃げ道)
109
109
  if os.environ.get('C3_SKIP_SECRET_CHECK') != '1':
110
110
  is_secret, pattern_name = _contains_secret(cmd)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """CLI: record a review decision in c3.db.review_decisions.
3
3
 
4
- F-001: dev-workflow フェーズ E でユーザーが「対応 / 許容 / 保留」を選んだ
4
+ review-hint: dev-workflow フェーズ E でユーザーが「対応 / 許容 / 保留」を選んだ
5
5
  判断を SQLite に記録するための薄い CLI ラッパー。実装本体は
6
6
  ``c3.db.insert_review_decision``。
7
7
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """CLI: record the outcome of the previously-selected tier in tier_bandit.
3
3
 
4
- F-005 MVP: dev-workflow フェーズ E の承認/否認シグナルを受けて、
4
+ tier-routing MVP: dev-workflow フェーズ E の承認/否認シグナルを受けて、
5
5
  ``select_tier.py`` が直近に書いた ``.claude/state/tier_selection.json`` を
6
6
  読み、対応する Tier の (alpha, beta, trials) を ``tier_bandit`` テーブルで
7
7
  更新する。
@@ -119,7 +119,7 @@ def _append_prompt_history(selection: dict, success: bool) -> None:
119
119
 
120
120
  def main(argv: list[str] | None = None) -> int:
121
121
  parser = argparse.ArgumentParser(
122
- description="Record tier outcome for F-005 Thompson Sampling"
122
+ description="Record tier outcome for tier-routing Thompson Sampling"
123
123
  )
124
124
  parser.add_argument(
125
125
  "--outcome",
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """Inject past review decisions as hints into a review report.
3
3
 
4
- F-001: レビュー判断ヒント機能。code-reviewer / security-reviewer が
4
+ review-hint: レビュー判断ヒント機能。code-reviewer / security-reviewer が
5
5
  生成したレビューレポート(`.claude/reports/code-review-report-*.md` /
6
6
  `security-review-report-*.md`)に、過去の許容例外・対応履歴を後付けで追記する。
7
7
 
@@ -1,4 +1,4 @@
1
- -- C3 SQLite schema (F-009: DuckDB ハイブリッド構成の基盤)
1
+ -- C3 SQLite schema (duckdb-hybrid: DuckDB ハイブリッド構成の基盤)
2
2
  --
3
3
  -- このファイルは session_start.py の _run_init_c3_db ハンドラから読まれ、
4
4
  -- `.claude/state/c3.db` に対して冪等に CREATE TABLE IF NOT EXISTS で適用される。
@@ -20,7 +20,7 @@ DROP TABLE IF EXISTS po_results;
20
20
  DROP TABLE IF EXISTS po_status;
21
21
 
22
22
  -- ---------------------------------------------------------------------------
23
- -- F-009 自身: スキーマバージョン管理
23
+ -- スキーマバージョン管理
24
24
  -- ---------------------------------------------------------------------------
25
25
 
26
26
  CREATE TABLE IF NOT EXISTS schema_version (
@@ -29,7 +29,7 @@ CREATE TABLE IF NOT EXISTS schema_version (
29
29
  );
30
30
 
31
31
  -- ---------------------------------------------------------------------------
32
- -- F-001: レビュー判断ヒント機能
32
+ -- review-hint: レビュー判断ヒント機能
33
33
  -- ---------------------------------------------------------------------------
34
34
  -- code-reviewer / security-reviewer の指摘に対して、人間が下した判断
35
35
  -- (対応 / 許容 / 保留)と理由を蓄積する。次回以降のレビュー時に過去判断を
@@ -49,9 +49,7 @@ CREATE INDEX IF NOT EXISTS idx_review_decisions_checklist
49
49
  ON review_decisions(checklist_id, decided_at DESC);
50
50
 
51
51
  -- ---------------------------------------------------------------------------
52
- -- F-002: PO 集約レイヤ
53
- -- ---------------------------------------------------------------------------
54
- -- F-005: Tier 自動ルーティング(Thompson Sampling 学習データ)
52
+ -- tier-routing: Tier 自動ルーティング(Thompson Sampling 学習データ)
55
53
  -- ---------------------------------------------------------------------------
56
54
  -- タスク複雑度ごとに各 Tier の Beta(α, β) 事前分布を保持する。
57
55
  -- α / β は完了ごとに更新され、サンプリングで次の Tier を選ぶ。
@@ -66,7 +64,7 @@ CREATE TABLE IF NOT EXISTS tier_bandit (
66
64
  PRIMARY KEY (task_complexity, tier)
67
65
  );
68
66
 
69
- -- F-005 Phase 2-B: 直近 N 件の outcome を保持して failure rate を計算する。
67
+ -- tier-routing Phase 2-B: 直近 N 件の outcome を保持して failure rate を計算する。
70
68
  -- tier_bandit が「累積 α/β」の集約を持つのに対し、こちらは個別 event の履歴。
71
69
  -- select_tier.py が直近 5 件以上で failure rate ≥ 0.5 を検出したら 1 段昇格する。
72
70
  CREATE TABLE IF NOT EXISTS tier_recent_outcomes (
@@ -80,10 +78,10 @@ CREATE INDEX IF NOT EXISTS idx_tier_recent
80
78
  ON tier_recent_outcomes(task_complexity, tier, ts DESC);
81
79
 
82
80
  -- ---------------------------------------------------------------------------
83
- -- F-008: SubagentStop メトリクス(既存 JSONL と並行運用)
81
+ -- subagent-metrics: SubagentStop メトリクス(既存 JSONL と並行運用)
84
82
  -- ---------------------------------------------------------------------------
85
83
  -- subagent_log.py が JSONL に追記している記録を SQLite にも保存する。
86
- -- F-005 の学習データ収集の前提。
84
+ -- tier-routing の学習データ収集の前提。
87
85
  -- 既存 .claude/logs/agent-runs.jsonl は移行までの間並行運用する。
88
86
 
89
87
  CREATE TABLE IF NOT EXISTS agent_runs (
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python3
2
2
  """UserPromptSubmit hook: recommend an LLM Tier (haiku/sonnet/opus) for the prompt.
3
3
 
4
- F-005 MVP: タスクの複雑度を簡易ヒューリスティックで推定し、Thompson Sampling
4
+ tier-routing MVP: タスクの複雑度を簡易ヒューリスティックで推定し、Thompson Sampling
5
5
  (または学習データ収集期は uniform random)で推奨 Tier を決定して
6
6
  ``additionalContext`` で親 Claude に伝える。
7
7
 
@@ -288,11 +288,11 @@ def write_tier_selection(
288
288
  record_tier_outcome.py がこの json を読んで α/β を更新する。
289
289
  既存ファイルは上書きされる(最新 1 件のみ保持)。
290
290
 
291
- F-005 Phase 2-A: ``suggested_model`` も併せて書く。runner.py がこれを読んで
291
+ tier-routing Phase 2-A: ``suggested_model`` も併せて書く。runner.py がこれを読んで
292
292
  PO 経由のサブエージェント起動時に ``claude --agents`` で動的に上書きする。
293
293
  tier 名と model の短縮名は同一とする。
294
294
 
295
- F-005 Phase 2-B: ``escalated`` / ``escalation_reason`` を任意で含める。
295
+ tier-routing Phase 2-B: ``escalated`` / ``escalation_reason`` を任意で含める。
296
296
  failure rate に基づく昇格が起きた場合のみ True / 文字列が入る。
297
297
  """
298
298
  os.makedirs(os.path.dirname(TIER_SELECTION_PATH), exist_ok=True)
@@ -345,7 +345,7 @@ def build_additional_context(
345
345
  suffix += f" [複雑度判定: {complexity_source}]"
346
346
 
347
347
  return (
348
- f"[F-005 Tier 推奨] 複雑度: {complexity} / 推奨 Tier: {tier}({confidence})。"
348
+ f"[tier-routing 推奨] 複雑度: {complexity} / 推奨 Tier: {tier}({confidence})。"
349
349
  f"PO 経由のサブエージェント起動時はこの推奨が claude --agents JSON で"
350
350
  f" 自動適用されます(Phase 2-A)。親 Claude の Agent ツール経由は依然"
351
351
  f" frontmatter 指定が優先されるため、コスト最適化したい場合は手動切替"
@@ -4,7 +4,7 @@
4
4
  3 つの責務を順に実行する:
5
5
  1. file-history のクリア(旧 clear_file_history.py)
6
6
  2. sandbox 設定の有効化(旧 enable_sandbox.py、worktree ではスキップ)
7
- 3. C3 SQLite DB の初期化(旧 init_c3_db.py、F-009 基盤)
7
+ 3. C3 SQLite DB の初期化(旧 init_c3_db.py、duckdb-hybrid 基盤)
8
8
 
9
9
  各処理は独立しており、1 つが失敗しても他を実行する(exit 0 を返す)。
10
10
  失敗してもセッションは止めない(C3 の他機能を妨げない方針)。
@@ -60,7 +60,7 @@ def ensure_session_initialized(path: str, date_str: str) -> None:
60
60
  def extract_section(content: str, heading: str) -> str:
61
61
  """セッションファイル本文から ``## {heading}`` セクションの内容を抽出する。
62
62
 
63
- F-004(MemoryConsolidation)と restore_session.py で共通利用される。
63
+ memory-consolidation(MemoryConsolidation)と restore_session.py で共通利用される。
64
64
  ``## {heading}\\n`` から次の ``\\n## `` または ``\\n<!--`` または末尾までを返す。
65
65
  見つからない場合は空文字列を返す。
66
66
 
@@ -49,16 +49,16 @@ _MAX_SCAN_LINES = 10_000
49
49
  _EVENT_START = "SubagentStart"
50
50
  _EVENT_STOP = "SubagentStop"
51
51
 
52
- # F-002 Phase 2-B: SubagentStop の status 値の正常終了マーカー(仕様変更時の単一窓口)。
52
+ # po-sqlite Phase 2-B: SubagentStop の status 値の正常終了マーカー(仕様変更時の単一窓口)。
53
53
  _STATUS_SUCCESS = "success"
54
54
 
55
- # F-002 Phase 2-B: po_status.current_step の最大文字数 [SR-V-001]。
55
+ # po-sqlite Phase 2-B: po_status.current_step の最大文字数 [SR-V-001]。
56
56
  # payload.agent_type / agent_id は任意文字列のため DB 容量保護のため切り詰める。
57
57
  _MAX_CURRENT_STEP_LEN = 200
58
58
 
59
59
  # payload のホワイトリスト対象フィールド (sec-M-1)
60
- # F-008: total_tokens / status / token_usage / model を追加。
61
- # Tier 自動ルーティング (F-005) の学習データ収集の前提となる。
60
+ # subagent-metrics: total_tokens / status / token_usage / model を追加。
61
+ # Tier 自動ルーティング (tier-routing) の学習データ収集の前提となる。
62
62
  # result 系(応答本文・コード断片混入リスク)は意図的に除外。
63
63
  _SAFE_PAYLOAD_FIELDS = frozenset({
64
64
  'hook_event_name',
@@ -1,7 +1,9 @@
1
1
  # Code Review Checklist
2
2
 
3
3
  各項目には `[CR-XX-NNN]` 形式の checklist_id を付与している。
4
- レビュー時に指摘する場合はこの ID を併記すること(F-001: レビュー判断ヒント機能の照合キー)。
4
+ レビュー時に指摘する場合はこの ID を併記すること(review-hint 機能の照合キー)。
5
+
6
+ **該当 ID がない指摘**は `[CR-NEW]` を使う。無理やり近い既存 ID にマッピングしないこと(review-hint の照合精度が落ち、チェックリストの成長機会も失われるため)。`[CR-NEW]` 指摘は本チェックリストへの追加候補として扱う。
5
7
 
6
8
  ## 必須チェック項目(全作成物共通)
7
9
 
@@ -1,7 +1,9 @@
1
1
  # Security Review Checklist
2
2
 
3
3
  各項目には `[SR-XX-NNN]` 形式の checklist_id を付与している。
4
- レビュー時に指摘する場合はこの ID を併記すること(F-001: レビュー判断ヒント機能の照合キー)。
4
+ レビュー時に指摘する場合はこの ID を併記すること(review-hint 機能の照合キー)。
5
+
6
+ **該当 ID がない指摘**は `[SR-NEW]` を使う。無理やり近い既存 ID にマッピングしないこと(review-hint の照合精度が落ち、チェックリストの成長機会も失われるため)。`[SR-NEW]` 指摘は本チェックリストへの追加候補として扱う。
5
7
 
6
8
  ## 必須チェック項目(OWASP Top 10 準拠・全作成物共通)
7
9
 
@@ -380,7 +380,7 @@ AskUserQuestion で確認する:
380
380
 
381
381
  Agent ツールで `code-reviewer` エージェントを起動する。
382
382
 
383
- **F-001 過去判断ヒント注入(レポート生成後):**
383
+ **review-hint 過去判断ヒント注入(レポート生成後):**
384
384
  code-reviewer がレポートを Write し終えたら、Bash で `.claude/hooks/review_hint_inject.py` を呼んで過去判断ヒントをレポート末尾に追記する:
385
385
 
386
386
  ```bash
@@ -438,7 +438,7 @@ AskUserQuestion で確認する:
438
438
  ```
439
439
  1. 対応する指摘に `> **[対応予定]**` を追記する
440
440
  2. 許容する指摘の直下に `> **[許容]** {理由}` を Edit で追記する(検出記録は削除しない)
441
- 3. **F-001 判断記録**: 各指摘について Bash で c3.db に記録する(`[CR-XX-NNN]` を含むもののみ):
441
+ 3. **review-hint 判断記録**: 各指摘について Bash で c3.db に記録する(`[CR-XX-NNN]` を含むもののみ。`[CR-NEW]` は記録対象外、チェックリスト追加候補として別途扱う):
442
442
  ```bash
443
443
  python .claude/hooks/record_review_decision.py \
444
444
  --checklist-id CR-Q-001 \
@@ -460,7 +460,7 @@ AskUserQuestion で許容理由を確認する:
460
460
  }
461
461
  ```
462
462
  1. 全指摘の直下に `> **[許容]** {理由}` を Edit で追記する(検出記録は削除しない)
463
- 2. **F-001 判断記録**: 全 `[CR-XX-NNN]` 指摘について `record_review_decision.py --decision accepted` で記録する
463
+ 2. **review-hint 判断記録**: 全 `[CR-XX-NNN]` 指摘について `record_review_decision.py --decision accepted` で記録する
464
464
  3. セッションファイルの `## うまくいったアプローチ` に `[許容例外] {指摘内容} → {許容理由}` の形式で追記し `patterns` に記録する
465
465
  4. セッションファイルの `- [ ] code-review` を `- [x]` に Edit して E-2 へ。
466
466
 
@@ -474,7 +474,7 @@ AskUserQuestion で許容理由を確認する:
474
474
 
475
475
  Agent ツールで `security-reviewer` エージェントを起動する。
476
476
 
477
- **F-001 過去判断ヒント注入(レポート生成後):**
477
+ **review-hint 過去判断ヒント注入(レポート生成後):**
478
478
  security-reviewer がレポートを Write し終えたら、Bash で `.claude/hooks/review_hint_inject.py` に **両レポートのパス** を渡して呼ぶ。両方渡すことで重複指摘フラグ(同じ checklist_id を CR と SR が指摘)が判定される:
479
479
 
480
480
  ```bash
@@ -503,7 +503,7 @@ AskUserQuestion で確認する:
503
503
  ```
504
504
 
505
505
  承認後 → セッションファイルの `- [ ] security-review` を `- [x]` に Edit する。続けて **「引き継ぎバックログの照合」**(後述の共通ステップ)を実行してからコミットを提案する。
506
- **F-005 結果記録**: フェーズ E の最終承認時のみ Bash で記録する(多重カウント防止のため E-1 では記録しない):
506
+ **tier-routing 結果記録**: フェーズ E の最終承認時のみ Bash で記録する(多重カウント防止のため E-1 では記録しない):
507
507
  ```bash
508
508
  python .claude/hooks/record_tier_outcome.py --outcome success
509
509
  ```
@@ -538,7 +538,7 @@ python .claude/hooks/record_tier_outcome.py --outcome success
538
538
  ```
539
539
  1. 対応する指摘に `> **[対応予定]**` を追記する
540
540
  2. 許容する指摘の直下に `> **[許容]** {理由}` を Edit で追記する(検出記録は削除しない)
541
- 3. **F-001 判断記録**: 各指摘について Bash で c3.db に記録する(`[SR-XX-NNN]` を含むもののみ):
541
+ 3. **review-hint 判断記録**: 各指摘について Bash で c3.db に記録する(`[SR-XX-NNN]` を含むもののみ。`[SR-NEW]` は記録対象外、チェックリスト追加候補として別途扱う):
542
542
  ```bash
543
543
  python .claude/hooks/record_review_decision.py \
544
544
  --checklist-id SR-K-002 \
@@ -560,10 +560,10 @@ AskUserQuestion で許容理由を確認する:
560
560
  }
561
561
  ```
562
562
  1. 全指摘の直下に `> **[許容]** {理由}` を Edit で追記する(検出記録は削除しない)
563
- 2. **F-001 判断記録**: 全 `[SR-XX-NNN]` 指摘について `record_review_decision.py --decision accepted` で記録する
563
+ 2. **review-hint 判断記録**: 全 `[SR-XX-NNN]` 指摘について `record_review_decision.py --decision accepted` で記録する
564
564
  3. セッションファイルの `## うまくいったアプローチ` に `[許容例外] {指摘内容} → {許容理由}` の形式で追記し `patterns` に記録する
565
565
  4. セッションファイルの `- [ ] security-review` を `- [x]` に Edit する。続けて **「引き継ぎバックログの照合」**(後述の共通ステップ)を実行してからコミットを提案する。
566
- 5. **F-005 結果記録**: 全許容で完了するのも「成功」としてカウント:
566
+ 5. **tier-routing 結果記録**: 全許容で完了するのも「成功」としてカウント:
567
567
  ```bash
568
568
  python .claude/hooks/record_tier_outcome.py --outcome success
569
569
  ```
@@ -571,13 +571,13 @@ AskUserQuestion で許容理由を確認する:
571
571
  **「否認・再診断を依頼する」の場合:**
572
572
  追加の AskUserQuestion でフィードバックを確認し再実行する。
573
573
  セッションファイルの `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する。
574
- **F-005 結果記録**: 否認は「失敗」としてカウント:
574
+ **tier-routing 結果記録**: 否認は「失敗」としてカウント:
575
575
  ```bash
576
576
  python .claude/hooks/record_tier_outcome.py --outcome failure
577
577
  ```
578
578
 
579
579
  **「全て対応する」「対応する指摘を選ぶ」の場合(フェーズ C へ戻る):**
580
- これらも tier の選択がコスト最適でなかったとみなし、**F-005 結果記録**で失敗をカウントしてからフェーズ C へ:
580
+ これらも tier の選択がコスト最適でなかったとみなし、**tier-routing 結果記録**で失敗をカウントしてからフェーズ C へ:
581
581
  ```bash
582
582
  python .claude/hooks/record_tier_outcome.py --outcome failure
583
583
  ```
@@ -13,10 +13,3 @@ plan-report に基づいて実装フェーズを実行する。
13
13
  3. `.claude/skills/dev-workflow/SKILL.md` の AskUserQuestion・Edit・セッションファイル更新の手順を省略しない
14
14
  4. D-0 で plan-report に YAML フロントマター(`po_plan_version`)が検出された場合は、続けて **必ず** `.claude/skills/parallel-agents/SKILL.md` を Read してその手順に従う(親 Claude の Agent ツール並列起動 + 公式 `isolation:worktree`)
15
15
  5. フロントマターが無い場合は legacy の D-1〜D-5 ceremony(tester→developer→tester の TDD 逐次実行)にフォールバックする
16
-
17
- ## 移行注意(v1.12.0+)
18
-
19
- - v1.12.0 で並列実行レイヤを PO(Parallel Orchestra)から `parallel-agents` skill に切り替えた
20
- - v1.14.0 で旧 `wave-execution.md` 経由の PO 委譲を削除
21
- - v2.0.0 で `parallel_orchestra` パッケージ本体を削除
22
- - v2.1.0 で `tdd-develop` agent と `worktree-tdd-workflow` skill を廃止し、planner が TDD を 3-wave (Red tester / Green developer / Green 確認 tester) に分解する設計に統一
@@ -31,12 +31,12 @@ Glob で `.claude/memory/sessions/*.tmp` を検索し、ファイル名(YYYYMM
31
31
  ```bash
32
32
  git log --since='{前回 SESSION の YYYYMMDD を YYYY-MM-DD 形式に変換}' --oneline
33
33
  ```
34
- 3. 各 `- [ ]` 行に含まれる識別キーワード(`F-XXX` / `Phase X` / 機能名 / 「Zenn」「リリース」などの名詞)が、いずれかのコミットメッセージに含まれているかをキーワード照合する
34
+ 3. 各 `- [ ]` 行に含まれる識別キーワード(機能名 / `Phase X` / 「Zenn」「リリース」などの名詞)が、いずれかのコミットメッセージに含まれているかをキーワード照合する
35
35
  4. 該当があれば「**完了している可能性のあるタスク**」として Step 3 のサマリに加える(コミットハッシュも併記する)
36
36
  5. **自動で `[x]` 化はしない**。Step 4 のあとで AskUserQuestion を提示し、ユーザー承認した項目のみ Edit で `[x]` 化する
37
37
  6. 該当なし、または前回セッションが当日の場合はこの Step をスキップする
38
38
 
39
- > 目的: 「F-004 Phase 2 → v1.3.0 完了」のように、リリースで完了したのに `[ ]` のまま残った引き継ぎタスクを次セッション開始時に検出する。
39
+ > 目的: 「memory-consolidation Phase 2 → v1.3.0 完了」のように、リリースで完了したのに `[ ]` のまま残った引き継ぎタスクを次セッション開始時に検出する。
40
40
 
41
41
  ---
42
42
 
@@ -135,7 +135,7 @@ session ファイルはタスク完了のたびに更新する。まとめて最
135
135
 
136
136
  - **A. ワークフローフェーズ項目**(例: `- [ ] ヒアリング` / `- [ ] 設計` / `- [ ] tester: Red フェーズ`)
137
137
  - 各スキル(dev-workflow など)が承認直後に Edit で `[x]` 化する。タイミングは各 SKILL.md に明記されている
138
- - **B. 引き継ぎバックログ項目**(例: `- [ ] F-XXX Phase X` / `- [ ] Zenn 記事化`)
138
+ - **B. 引き継ぎバックログ項目**(例: `- [ ] {機能名} Phase X` / `- [ ] Zenn 記事化`)
139
139
  - セッションを跨ぐ高レベルタスク。以下のタイミングで必ず照合・更新する:
140
140
  - **セッション開始時**: init-session Step 1.5 で git log と照合
141
141
  - **リリース・大きな完了の節目**: dev-workflow フェーズ E の最終承認時にバックログ確認 AskUserQuestion で更新
@@ -30,7 +30,7 @@ Claude Code のサブエージェントは **更にサブエージェントを s
30
30
  並列実行で permission プロンプトに詰まらないよう、v2.2.0 から **worktree 専用の `wt_*` プレフィックス agent** を導入した:
31
31
 
32
32
  - `wt_tester` / `wt_developer` / `wt_systematic-debugger`: frontmatter に `permissionMode: bypassPermissions` を持つ並列専用バリアント
33
- - 内容はオリジナルの `tester` / `developer` / `systematic-debugger` と同一
33
+ - 本体ロジックはオリジナルの `tester` / `developer` / `systematic-debugger` と同等。差分はレポート出力のファイル名規約のみで、並列専用 agent は `test-report-{task_id}.md` / `debug-needed-{task_id}.md` / `debug-analysis-{task_id}.md` を主経路とする(タイムスタンプ形式は task_id 不在時の保険)
34
34
  - worktree 内のみで動作するため、`worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) が worktree 外への書き込みをブロックする保護下にある
35
35
 
36
36
  直接起動経路(worktree なし)では元の agent を使い、main リポジトリでの bypass を防ぐ。
@@ -165,7 +165,8 @@ AskUserQuestion ツール:
165
165
  ```
166
166
 
167
167
  - **tester タスクの場合の追加注入**: 「`.claude/reports/test-report-{task_id}.md` を Write し、writes 宣言と一致させること」
168
- - **developer タスクの場合の追加注入**: 「`.claude/reports/debug-needed-*.md` 出力で Stuck Signal を返してよい。systematic-debugger は親 Claude が後続 wave で呼ぶ」
168
+ - **developer タスクの場合の追加注入**: 「Stuck Signal を返す場合は `.claude/reports/debug-needed-{task_id}.md` Write する(task_id を含めることで親 Claude が後続 wave で systematic-debugger を呼ぶ際に対象 task を特定できる)。systematic-debugger は親 Claude が後続 wave で呼ぶ」
169
+ - **systematic-debugger タスクの場合の追加注入**: 「`.claude/reports/debug-analysis-{task_id}.md` を Write し、writes 宣言と一致させること」
169
170
 
170
171
  全タスクを 1 メッセージ内で発行したあと、各 Agent の完了通知が `<task-notification>` で順次届く。全件揃うまで待つ。
171
172
 
@@ -276,13 +277,3 @@ checkpoint の summary には KEEP ルール(設計判断・決定事項・解
276
277
  - agent ツール並列起動の `<task-notification>` の到着順序は保証されないため、結果集約の表は task_id でソートして提示する
277
278
  - worktree クリーンアップを忘れると `.claude/worktrees/` に dead worktree が積もる。`-f -f` フラグの必要性は PoC で実証済み
278
279
 
279
- ---
280
-
281
- ## PO 廃止移行期の注意(v1.12.0〜v2.2.0)
282
-
283
- - 本 skill は v1.12.0 で導入された
284
- - v1.13.0 で `po-status` skill / `c3 status` CLI を削除
285
- - v1.14.0 で `c3 po` CLI と `wave-execution` skill を削除し、Step 0/1 で `c3 plan validate` / `c3 plan waves`(純粋な YAML 検証 + DAG 分解、PO 非依存)に切り替えた
286
- - v2.0.0 で `parallel_orchestra` パッケージ本体を削除(互換破壊)
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 を防ぐ**
@@ -15,9 +15,6 @@
15
15
  # Agent-individual memory (personal, populated at runtime)
16
16
  .claude/agent-memory/
17
17
 
18
- # Workflow test sandbox (not for distribution)
19
- examples/
20
-
21
18
  # Temporary files
22
19
  .claude/tmp/
23
20