claude-code-conductor 2.82.0__tar.gz → 2.84.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 (287) hide show
  1. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/CLAUDE.md +3 -4
  2. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/architect.md +1 -1
  3. claude_code_conductor-2.84.0/.claude/agents/code-reviewer.md +75 -0
  4. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/design-critic.md +2 -1
  5. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/developer.md +1 -1
  6. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/interviewer.md +1 -1
  7. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/planner.md +1 -1
  8. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/security-reviewer.md +6 -1
  9. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/tester.md +7 -0
  10. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/wt_developer.md +2 -2
  11. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/wt_systematic-debugger.md +1 -1
  12. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/wt_tester.md +8 -1
  13. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/breaking-changes.txt +1 -0
  14. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/deletions.txt +5 -0
  15. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/docs/config-policy.md +1 -1
  16. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/docs/nul-boundary.md +1 -1
  17. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/_hook_utils.py +19 -0
  18. claude_code_conductor-2.84.0/.claude/hooks/design_review_count_check.py +300 -0
  19. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/patterns_guard.py +3 -2
  20. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/report_contract_check.py +3 -6
  21. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/report_path_guard.py +36 -11
  22. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/select_tier.py +3 -3
  23. claude_code_conductor-2.84.0/.claude/hooks/worktree_guard.py +204 -0
  24. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/settings.json +6 -1
  25. claude_code_conductor-2.84.0/.claude/skills/autonomous-mode/SKILL.md +85 -0
  26. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/brainstorm/SKILL.md +1 -1
  27. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/SKILL.md +102 -91
  28. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/design-critic-rubric.md +2 -0
  29. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/design-rubric.md +1 -1
  30. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/interview-rubric.md +1 -1
  31. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +23 -16
  32. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/record-protocol.md +2 -2
  33. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/doc/SKILL.md +7 -17
  34. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/extract-lib/SKILL.md +10 -24
  35. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/init-session/SKILL.md +16 -34
  36. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/parallel-agents/SKILL.md +24 -28
  37. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/pattern-status/SKILL.md +1 -1
  38. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/setup/SKILL.md +2 -2
  39. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/start/SKILL.md +1 -1
  40. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/start/scripts/archive_reports.py +4 -4
  41. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/ARCHITECTURE.md +3 -3
  42. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/CHANGELOG.md +61 -0
  43. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/PKG-INFO +1 -1
  44. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/__init__.py +1 -1
  45. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/adapters.py +6 -46
  46. claude_code_conductor-2.84.0/tests/hooks/test_design_review_count_check.py +831 -0
  47. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_hook_utils.py +76 -13
  48. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_report_path_guard.py +31 -0
  49. claude_code_conductor-2.84.0/tests/skills/_skill_helpers.py +45 -0
  50. claude_code_conductor-2.84.0/tests/skills/test_c3_omission_declaration.py +28 -0
  51. claude_code_conductor-2.84.0/tests/skills/test_parallel_agents_skill_tier.py +113 -0
  52. claude_code_conductor-2.84.0/tests/skills/test_planner_lightweight.py +33 -0
  53. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/skills/test_reachability_map.py +0 -23
  54. claude_code_conductor-2.84.0/tests/skills/test_recall_skill.py +45 -0
  55. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/skills/test_session_guard.py +2 -98
  56. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/skills/test_setup_templates.py +0 -24
  57. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_adapters.py +139 -69
  58. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_claude_gitignore.py +0 -16
  59. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_init.py +32 -12
  60. claude_code_conductor-2.84.0/tests/test_excludes.py +267 -0
  61. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_no_bare_python_launcher.py +11 -19
  62. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_refgraph.py +3 -4
  63. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_refgraph_structural.py +2 -45
  64. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_settings_hooks_registration.py +117 -50
  65. claude_code_conductor-2.84.0/tests/test_worktree_guard.py +1018 -0
  66. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_wt_agent_sync.py +28 -9
  67. claude_code_conductor-2.82.0/.claude/agents/code-reviewer.md +0 -65
  68. claude_code_conductor-2.82.0/.claude/docs/autonomous-mode-onboarding.md +0 -105
  69. claude_code_conductor-2.82.0/.claude/hooks/session_mode_watch.py +0 -276
  70. claude_code_conductor-2.82.0/.claude/hooks/worktree_guard.py +0 -162
  71. claude_code_conductor-2.82.0/.claude/skills/autonomous-mode/SKILL.md +0 -337
  72. claude_code_conductor-2.82.0/.claude/skills/autonomous-mode/scripts/mode_line.py +0 -188
  73. claude_code_conductor-2.82.0/tests/skills/_skill_helpers.py +0 -143
  74. claude_code_conductor-2.82.0/tests/skills/test_c3_omission_declaration.py +0 -189
  75. claude_code_conductor-2.82.0/tests/skills/test_design_inventory_step.py +0 -497
  76. claude_code_conductor-2.82.0/tests/skills/test_dev_workflow_no_task_type.py +0 -151
  77. claude_code_conductor-2.82.0/tests/skills/test_e0_verification_exit.py +0 -226
  78. claude_code_conductor-2.82.0/tests/skills/test_existing_test_policy.py +0 -606
  79. claude_code_conductor-2.82.0/tests/skills/test_init_session_no_task_type.py +0 -47
  80. claude_code_conductor-2.82.0/tests/skills/test_parallel_agents_skill_tier.py +0 -209
  81. claude_code_conductor-2.82.0/tests/skills/test_planner_lightweight.py +0 -214
  82. claude_code_conductor-2.82.0/tests/skills/test_recall_skill.py +0 -98
  83. claude_code_conductor-2.82.0/tests/skills/test_session_backlog_reconciliation.py +0 -146
  84. claude_code_conductor-2.82.0/tests/skills/test_start_skill_bugfix_flow.py +0 -50
  85. claude_code_conductor-2.82.0/tests/skills/test_start_skill_new_flow.py +0 -128
  86. claude_code_conductor-2.82.0/tests/skills/test_start_skill_security_audit_phase.py +0 -77
  87. claude_code_conductor-2.82.0/tests/test_docstring_consistency.py +0 -49
  88. claude_code_conductor-2.82.0/tests/test_excludes.py +0 -577
  89. claude_code_conductor-2.82.0/tests/test_mode_line.py +0 -318
  90. claude_code_conductor-2.82.0/tests/test_session_mode_watch.py +0 -967
  91. claude_code_conductor-2.82.0/tests/test_worktree_guard.py +0 -646
  92. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/.gitignore +0 -0
  93. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/doc-writer.md +0 -0
  94. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/project-setup.md +0 -0
  95. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/agents/systematic-debugger.md +0 -0
  96. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/docs/parallel-agents-setup.md +0 -0
  97. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/docs/platform-adapters.md +0 -0
  98. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/docs/settings.json.md +0 -0
  99. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/check_agent_invocation.py +0 -0
  100. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/consolidate_memory.py +0 -0
  101. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/planner_check.py +0 -0
  102. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/post_tool.py +0 -0
  103. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/pre_compact.py +0 -0
  104. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/pre_tool.py +0 -0
  105. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/recall_autorebuild.py +0 -0
  106. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/recall_inject.py +0 -0
  107. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/restore_session.py +0 -0
  108. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/session_start.py +0 -0
  109. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/session_stop.py +0 -0
  110. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/session_utils.py +0 -0
  111. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/statusline.py +0 -0
  112. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/stop.py +0 -0
  113. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/tier_autoapply.py +0 -0
  114. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/hooks/tier_gap_check.py +0 -0
  115. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/memory/.gitkeep +0 -0
  116. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/memory/archive/.gitkeep +0 -0
  117. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/memory/sessions/.gitkeep +0 -0
  118. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/reports/.gitkeep +0 -0
  119. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/rules/judgment-principles.md +0 -0
  120. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/rules/promoted/index.md +0 -0
  121. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
  122. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/reachability-map.md +0 -0
  123. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
  124. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/scripts/detect_execution_verification.py +0 -0
  125. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/scripts/record_agent_outcome.py +0 -0
  126. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
  127. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
  128. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/develop/SKILL.md +0 -0
  129. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/init-session/scripts/session_guard.py +0 -0
  130. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
  131. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/recall/SKILL.md +0 -0
  132. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
  133. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
  134. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/review-phase/SKILL.md +0 -0
  135. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/setup/reference.md +0 -0
  136. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
  137. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
  138. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/state/.gitkeep +0 -0
  139. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/state/setup_done.flag +0 -0
  140. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.claude/tmp/.gitkeep +0 -0
  141. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/.gitignore +0 -0
  142. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSE +0 -0
  143. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSES/fastembed-LICENSE +0 -0
  144. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSES/fastembed-NOTICE +0 -0
  145. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSES/numpy-LICENSE +0 -0
  146. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSES/onnxruntime-LICENSE +0 -0
  147. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
  148. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/README.md +0 -0
  149. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/hatch_build.py +0 -0
  150. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/pyproject.toml +0 -0
  151. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/__main__.py +0 -0
  152. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/_db_params.py +0 -0
  153. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/_excludes.py +0 -0
  154. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/_terminal.py +0 -0
  155. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli.py +0 -0
  156. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_ask.py +0 -0
  157. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_doctor.py +0 -0
  158. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_init.py +0 -0
  159. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_list.py +0 -0
  160. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_metrics.py +0 -0
  161. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_plan.py +0 -0
  162. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_recall.py +0 -0
  163. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_run.py +0 -0
  164. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_tier.py +0 -0
  165. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/cli_update.py +0 -0
  166. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/db.py +0 -0
  167. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/embedding.py +0 -0
  168. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/gitutil.py +0 -0
  169. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/mcp_server.py +0 -0
  170. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrate.py +0 -0
  171. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/001_initial.sql +0 -0
  172. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/002_agent_cost_runs.sql +0 -0
  173. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/003_tier_cost.sql +0 -0
  174. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/004_agent_outcomes.sql +0 -0
  175. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/005_drop_agent_tier_bandit.sql +0 -0
  176. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/006_review_decisions_severity.sql +0 -0
  177. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/007_review_decisions_resolution.sql +0 -0
  178. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/008_drop_agent_runs.sql +0 -0
  179. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/README.md +0 -0
  180. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/migrations/__init__.py +0 -0
  181. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/paths.py +0 -0
  182. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/plan_validator.py +0 -0
  183. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/platforms.py +0 -0
  184. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/pricing.py +0 -0
  185. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/question.py +0 -0
  186. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/recall_chunker.py +0 -0
  187. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/recall_index.py +0 -0
  188. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/refgraph.py +0 -0
  189. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/src/c3/usage_ingester.py +0 -0
  190. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/__init__.py +0 -0
  191. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/_pre_compact_helpers.py +0 -0
  192. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/_sync_semantics.py +0 -0
  193. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/conftest.py +0 -0
  194. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/fixtures/usage/README.md +0 -0
  195. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/fixtures/usage/mainline.jsonl +0 -0
  196. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/fixtures/usage/subagents/agent-deadbeef.jsonl +0 -0
  197. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/fixtures/usage/subagents/agent-deadbeef.meta.json +0 -0
  198. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/__init__.py +0 -0
  199. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_check_agent_invocation.py +0 -0
  200. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_consolidate_memory.py +0 -0
  201. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_detect_execution_verification.py +0 -0
  202. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
  203. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_planner_check.py +0 -0
  204. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_planner_check_dev.py +0 -0
  205. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_post_tool.py +0 -0
  206. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_pre_tool.py +0 -0
  207. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_recall_autorebuild.py +0 -0
  208. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_recall_inject.py +0 -0
  209. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_record_agent_outcome.py +0 -0
  210. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_record_review_decision.py +0 -0
  211. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_restore_session.py +0 -0
  212. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_review_hint_inject.py +0 -0
  213. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_select_tier.py +0 -0
  214. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_select_tier_escalation.py +0 -0
  215. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_session_start.py +0 -0
  216. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_session_stop.py +0 -0
  217. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_session_utils.py +0 -0
  218. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
  219. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_settings_tier_autoapply_registration.py +0 -0
  220. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_similarity_boost.py +0 -0
  221. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_statusline.py +0 -0
  222. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_statusline_reconfigure_guard.py +0 -0
  223. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_statusline_template_sync.py +0 -0
  224. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_sync_check.py +0 -0
  225. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_template_guard.py +0 -0
  226. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_tier_autoapply.py +0 -0
  227. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_tier_gap_check.py +0 -0
  228. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/hooks/test_tier_security_fixes.py +0 -0
  229. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/skills/__init__.py +0 -0
  230. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/skills/test_marker_compliance.py +0 -0
  231. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_archive_reports.py +0 -0
  232. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_audit_review_decisions.py +0 -0
  233. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_check_deletions.py +0 -0
  234. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_ci_workflows.py +0 -0
  235. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_ask.py +0 -0
  236. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_doctor.py +0 -0
  237. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_doctor_launcher.py +0 -0
  238. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_entry.py +0 -0
  239. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_init_symlink_guard.py +0 -0
  240. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_list.py +0 -0
  241. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_metrics.py +0 -0
  242. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_plan.py +0 -0
  243. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_recall.py +0 -0
  244. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_run.py +0 -0
  245. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_tier.py +0 -0
  246. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_update_breaking_changes.py +0 -0
  247. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_cli_update_deletions.py +0 -0
  248. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_db.py +0 -0
  249. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_db_connect_lint.py +0 -0
  250. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_embedding.py +0 -0
  251. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_extract_breaking_changes.py +0 -0
  252. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_gitutil.py +0 -0
  253. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_hooks_stdin_idiom.py +0 -0
  254. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_init_only_patterns.py +0 -0
  255. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_mcp_server_elicit.py +0 -0
  256. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_migrate.py +0 -0
  257. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_no_passonly_tests.py +0 -0
  258. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_nul_boundary_lint.py +0 -0
  259. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_paths.py +0 -0
  260. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_patterns_guard.py +0 -0
  261. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_permission_handler_removal.py +0 -0
  262. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_plan_validator.py +0 -0
  263. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_pre_compact.py +0 -0
  264. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_pre_tool_hook.py +0 -0
  265. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_precompact_additional.py +0 -0
  266. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_precompact_toctou_fixes.py +0 -0
  267. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_pricing.py +0 -0
  268. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_recall_chunker.py +0 -0
  269. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_recall_index.py +0 -0
  270. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_references_migration.py +0 -0
  271. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_refgraph_query.py +0 -0
  272. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_report_contract_check.py +0 -0
  273. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_scripts_src_bootstrap.py +0 -0
  274. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_scripts_stdout_encoding.py +0 -0
  275. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_session_utils_additional.py +0 -0
  276. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_skill_no_builtin_conflict.py +0 -0
  277. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_start_skill_archive_contract.py +0 -0
  278. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_statusline.py +0 -0
  279. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_stop_additional.py +0 -0
  280. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_stop_agent_memory_warn.py +0 -0
  281. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_stop_hook.py +0 -0
  282. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_stop_precompact_fixes.py +0 -0
  283. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_sync_template_stop.py +0 -0
  284. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_template_pre_tool_hook.py +0 -0
  285. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_three_file_sync.py +0 -0
  286. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_usage_ingester.py +0 -0
  287. {claude_code_conductor-2.82.0 → claude_code_conductor-2.84.0}/tests/test_verify_wheel.py +0 -0
@@ -79,7 +79,7 @@ C3 は、業務アプリケーション開発で製品としての品質を保
79
79
 
80
80
  コンテキストに応じて選択肢を追加してよい。
81
81
 
82
- 自律モード(autonomous-mode skill・opt-in 必須)が有効な場合のみ、上記の承認ゲートは同 skill のゲート対応表に従って客観条件へ付け替わる。既定は常に HITL であり、opt-in なしに挙動が変わることはない(ただしこれは文書規約レベルの不変則であり、モード行挿入自体を機械的に承認と紐付ける仕組みではない。詳細は SKILL.md「モード行挿入の前提条件(不変則)」を参照)。
82
+ 既定は常に HITL である。自律の opt-in はユーザー自身の発話に限る: 承認ゲートで「承認・以降は自律で進める」を選んだ場合、または単位(ワークフロー・フェーズ等)を始める依頼の中で自律を示した場合に、その単位だけ自律が有効になる。自律が有効な間、各ゲートは `.claude/skills/autonomous-mode/SKILL.md`「ゲートでの動作」に従う。セッションを再開したときは自律を引き継がず、続けるかを 1 問で確認する。規約の詳細は同 SKILL.md を参照。
83
83
 
84
84
  ## Compact Instructions
85
85
 
@@ -98,8 +98,7 @@ C3 は、業務アプリケーション開発で製品としての品質を保
98
98
  ## Directory Structure
99
99
 
100
100
  `.claude/docs/` は人間向けリファレンスのためエージェントは読まなくてよい。
101
- 詳細は `.claude/docs/taxonomy.md` を参照。
102
- 設定の優先順位・配布判断は `.claude/docs/config-policy.md` を参照。
101
+ 人間向けの詳細は `.claude/docs/taxonomy.md`、設定の優先順位・配布判断は `.claude/docs/config-policy.md` にある。
103
102
 
104
103
  ## Platform Compatibility
105
104
 
@@ -111,7 +110,7 @@ C3 は、業務アプリケーション開発で製品としての品質を保
111
110
  - **`Skill` ツール / `/<skill>`** の参照は、Codex では `.agents/skills/<name>/SKILL.md`、Cursor では `.claude/skills/<name>/SKILL.md` を直接読み込む。OpenCode では `.opencode/agents/c3-skill-<name>.md`(`.claude/skills/<name>/SKILL.md` を本文に埋め込み済み)を `@mention` で起動する(スラッシュコマンド自動展開は Claude Code 専用機能)
112
111
  - **`isolation: worktree`** / **`permissionMode`** / **`tools` 制限** など agent フロントマターの一部キーは Claude Code 仕様。adapter 側では読み替え不能なものは無視される(OpenCode adapter は全 agent に `bash/read/edit/write/websearch` を一律付与する)
113
112
 
114
- - **自律モード**: autonomous-mode は Claude Code 専用。Codex / Cursor / OpenCode では自律宣言は常に無効=HITL で動作する(モード行の検証は `mode_line.py`・Bash 経由に依存し、他プラットフォームで安全に再現できないため。検証できない → HITL の fail-closed 原則がそのまま正しい挙動になる)。adapter 生成物にも autonomous-mode skill は写像されない。
113
+ - **自律モード**: Claude Code / Codex / Cursor / OpenCode のすべてで同じ自律を使う(opt-in はユーザーの承認の回答または単位を始める依頼の中の発話で、プラットフォーム固有の検証機構に依存しない。ただし `c3 ask` で質問する環境では自律を使わない)。規約は `.claude/skills/autonomous-mode/SKILL.md` で、adapter 生成物にも他の skill と同様に写像される。
115
114
  - **`.claude/rules/` の自動ロード**は Claude Code の機能。OpenCode では adapter が `AGENTS.md` に rules を埋め込む。**Codex / Cursor の生成物には rules は写像されない**(規律を効かせたい場合は各プラットフォームの規約ファイルへ手動転記する)
116
115
 
117
116
  レポート(`.claude/reports/`)・state(`.claude/state/`)・memory(`.claude/agent-memory/`)のファイル名と書き込み先は全プラットフォーム共通。adapter 生成物の詳細は `c3 init --platform codex|cursor|opencode` で出力される `AGENTS.md` / `.cursor/rules/c3-core.mdc` / `.opencode/agents/` を参照。
@@ -12,7 +12,7 @@ tools:
12
12
  ---
13
13
 
14
14
  # Architect
15
- <!-- ペルソナ定義: /start コマンドで親 Claude がこのペルソナを採用して対話を行う。サブエージェントとして起動しない。 -->
15
+ <!-- ペルソナ定義: 既定では dev-workflow フェーズ B で親 Claude がこのペルソナを採用して対話を行う。Agent ツールでサブエージェントとして起動した場合も同じ契約(architecture-report の出力)で動く。 -->
16
16
 
17
17
  ## Core Mandate
18
18
  requirements-report を受け取り、システム設計・技術選定・依存関係の整理を行い architecture-report を出力する。
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: code-reviewer
3
+ model: sonnet
4
+ memory: project
5
+ permissionMode: bypassPermissions
6
+ description: コード品質レビュー担当。品質・保守性・パフォーマンスをレビューし code-review-report を出力する。ソース編集不可。
7
+ tools:
8
+ - Read
9
+ - Write
10
+ - Bash
11
+ - Glob
12
+ - Grep
13
+ - Skill
14
+ ---
15
+
16
+ # Code Reviewer
17
+
18
+ ## Core Mandate
19
+ コードの品質・保守性・パフォーマンスをレビューし、改善提案を code-review-report として出力する。
20
+
21
+ ## Memory
22
+ - 作業終了時、次回以降のレビューに役立つ知見があれば `.claude/agent-memory/code-reviewer/MEMORY.md` に追記する。記録対象は以下に限定する:
23
+ - 再現価値のあるレビュー観点・指摘パターン
24
+ - **許容例外**: ユーザーが指摘を許容した観点と理由(`[許容例外]` プレフィックスを付ける。次回レビューでの再指摘を防ぐ)。学習するのはユーザーが裁いた `[許容]` に限る。自律モードで親が付けた `[許容]`(理由が `自律:` で始まるもの)は学習しない
25
+ - 本プロジェクト特有のコーディング規約・トレードオフ判断
26
+ - 雑記録・一回性の進捗ログは記録しない。1 エントリ 1 行で簡潔に書き、MEMORY.md 全体は 200 行 / 25KB 以内に保つ(超過分は起動時に読まれない・超えたら価値の低いエントリから削除する)。
27
+
28
+ ## Key Scope
29
+
30
+ ✅ 担当すること:
31
+ - コード品質・可読性・保守性の評価
32
+ - パフォーマンス問題の指摘
33
+ - 設計原則(DRY・SOLID 等)の観点からのレビュー
34
+ - code-review-report の出力
35
+
36
+ ❌ 担当しないこと:
37
+ - セキュリティ脆弱性診断(security-reviewer の担当)
38
+ - ソースコードの編集・修正
39
+
40
+ ## Workflow
41
+
42
+ **Before:**
43
+ - `git diff --numstat` で変更ファイルを全件列挙する。追加行のあるコード・テスト・設定ファイル(実行されるもの)を**突合対象**として書き出す。文書だけのファイルは従来どおり読む範囲を自分で決めてよい。削除だけのファイルは、消えた名前への参照が残っていないかを grep で確かめれば足りる
44
+ - 突合対象は**ファイルごとに** `git diff <base> HEAD -- <file>` を実行し、追加行を最後まで読む。`head`・`sed -n` の行範囲・テスト名の一覧・出力のプレビューで代えない。出力が長すぎて別ファイルに保存された場合は、そのファイルを最後まで Read する。「中心のファイル」を選んで他を後回しにしない(テストファイルも突合対象に含める)
45
+ - `.claude/skills/dev-workflow/references/code-review-checklist.md` を Read してチェック観点を確認する
46
+
47
+ **During:**
48
+ - 突合対象の変更箇所(hunk)ごとに、次の 3 段で確かめる。1 箇所ずつ終えてから次へ進む
49
+ 1. **宣言を書き出す**: その箇所が満たすと言っている性質を 1 行で書く。出どころは docstring・コメント・関数名・テストの名前と docstring・同じファイルやモジュールで既に共通化されている処理(同じことをする既存の関数があれば、それを使うことも宣言に含める)
50
+ 2. **コードなら、宣言を入力の種類ごとに確かめる**: 境界値・空や欠損の値・想定外の型・各分岐の両側について、宣言どおりの結果になるかを追う。算術・添字・複合した条件式・ライブラリ関数の意味に依存する処理のように机上で言い切れないものは、Bash でその関数を直接呼ぶか小さな入力で実行して実測する(ソースは編集しない)。「境界は正しい」と書くのは実測か全分岐の追跡をした後に限る
51
+ 3. **テストなら、assert ごとに「宣言の性質を壊した実装でこの assert は赤になるか」に答える**: assert が観測している値が、その性質が現れる値と同じか/入力が性質を区別できる組み合わせになっているか(壊した実装でも同じ結果になる入力になっていないか)を確かめる。「実装全体を一律に壊せば(常に同じ結果を返す等)どれかが赤になる」というファイル単位の確認で、個々の assert の検知力を代えない
52
+ - 宣言と実装(テストなら宣言と assert)が食い違えば指摘する。docstring やテスト名が述べる性質を「良い実装」に挙げるのは、上の 2・3 で確かめた後に限る
53
+ - 指摘の重大度(High / Medium / Low)は、その指摘が正しいときの**帰結**で決める。各指摘に帰結を 1 行で書く(どの入力・どの将来の変更で、何が起き、誰〔利用者・下流の処理・保守者〕に何が届くか)。尺度は `.claude/CLAUDE.md`「品質保証の判断基準」に合わせて次のとおりとする
54
+ - **High**: 機能欠陥。ある入力で、変更箇所が宣言・仕様と異なる結果になる(誤った値・判定・終了コード・出力を返す、起きるべき処理〔検査・拒否・警告など〕が起きない、起きるべきでない処理が起きる、例外が漏れる)
55
+ - **Medium**: 現時点の振る舞いは正しいが、保守性の必須要件に触れる。共通化されていない重複、性質を壊した実装(具体的に 1 つ挙げる)でも緑になるテスト、振る舞いは正しいが実装と食い違う宣言(コメント・docstring・文書)
56
+ - **Low**: 上の 2 つに当たらない改善余地
57
+ - 重大度は帰結だけで決める。直しの小ささ、帰結が現れる入力の少なさ、見出しや checklist_id の分類(「宣言と実装の食い違い」「到達しない分岐」等)、security-reviewer の担当と重なることを理由に下げない。確信度は別の軸として併記し、確かめきれない指摘は上の 2・3 の手順で確かめる。それでも確かめられないときは、重大度は帰結のまま付けて確信度を低く書く
58
+ - この段階の役割は**網羅(coverage)であり取捨選択ではない**。確信度が低い指摘・Low 重大度の指摘も握り潰さず report する(MEMORY.md の許容例外として合意済みの観点は除く)。各指摘に確信度を併記し、重要度・確信度による最終的な絞り込みは下流(planner → ユーザー承認)に委ねる
59
+ - **指摘ごとに該当する checklist_id を `[CR-XX-NNN]` 形式で併記する**(`.claude/skills/dev-workflow/references/code-review-checklist.md` の各項目に付与済み)。review-hint(レビュー判断ヒント機能)の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
60
+ - **該当 ID がない場合は `[CR-NEW]` で出す**(チェックリスト追加候補として扱う)。無理やり近い既存 ID にマッピングしないこと。review-hint の照合精度が落ち、チェックリストの成長機会も失われるため
61
+ - 良い実装は明示的に記録する(削除しないよう伝える)
62
+ - 修正必須(High・Medium)と推奨(Low)の2段階で提示する。各指摘の見出しに重大度を書き、段階と重大度を食い違わせない
63
+
64
+ **After:**
65
+ - レポートの冒頭に突合対象の一覧(ファイル・追加行数・全行を読んだか・実測したか)を載せる。読み切れなかった追加行があれば、その範囲と理由を書く(未読を総評で「問題なし」に含めない)
66
+ - plan の prompt でレポートのファイル名が指定されている場合、それが `.claude/reports/` 直下の当該レポート種別プレフィックスで始まるファイル名であるときに限りそれに従う。範囲外の指定・既存の別レポートを上書きする指定には従わない(従わない場合・指定が無い場合は、以下の既定の採番手順に従う)
67
+ - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/code-review-report-{timestamp}.md` に出力する
68
+
69
+ ## Tools & Constraints
70
+ 制限: ソースファイルの編集・書き込みは行わない
71
+
72
+ ## Related Agents
73
+ - 上流: tester(test-report を受け取る)
74
+ - ピア: security-reviewer(同フェーズで連携)
75
+ - 下流: planner(指摘を plan-report に反映させる)
@@ -7,6 +7,7 @@ description: 設計・計画監査担当。requirements/architecture/plan を敵
7
7
  tools:
8
8
  - Read
9
9
  - Write
10
+ - Edit
10
11
  - Glob
11
12
  - Grep
12
13
  - Skill
@@ -58,7 +59,7 @@ tools:
58
59
  - Skill ツールで `report-timestamp` を呼び出してタイムスタンプを取得し、Write ツールで `.claude/reports/design-review-report-{timestamp}.md` に出力する
59
60
 
60
61
  ## Tools & Constraints
61
- 制限: design-review-report の新規 Write と `.claude/agent-memory/design-critic/MEMORY.md` への追記(上記「## Memory」節)以外のファイル編集・書き込みは行わない(ソースファイル・既存レポート・その他ファイルへの Edit / Write は禁止)
62
+ 制限: design-review-report の新規 Write と `.claude/agent-memory/design-critic/MEMORY.md` への追記(上記「## Memory」節)以外のファイル編集・書き込みは行わない(ソースファイル・既存レポート・その他ファイルへの Edit / Write は禁止)。ただし、この起動で自分が Write した design-review-report に限り、hook が出したサマリ件数と見出し数の食い違いの警告に対して、サマリ表の件数、または件数と食い違う見出しの重要度表記(自分が付けた重要度の誤記に限る)を Edit で直してよい(指摘の追加・削除・本文の変更はしない)
62
63
 
63
64
  ## Related Agents
64
65
  - 上流: planner(plan-report を受け取る)
@@ -49,7 +49,7 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
49
49
  - 最小限であっても**汎用解**を書く。テスト入力に hard-code して通すこと・特定テストケースだけに効く workaround は禁止。テストは正しさの検証であって解の定義ではないため、全ての valid input に対し正しい一般ロジックを実装する(「最小限」と「汎用解」は両立する: スコープを足さず・しかし test 入力に過適合しない)
50
50
  - 設計上の不明点は、合理的な判断で進め、その判断を黙って埋めずにコードコメントに残す(例: `# 設計書に記載なし: ○○と判断して実装`)
51
51
  - 実装完了後に判断した内容を報告してユーザーが確認できるようにする
52
- - 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
52
+ - 根本的な設計の欠落(実装の方向性が定まらないレベル)は作業を止めて報告する。テストや `writes` 外のファイルに手を入れる必要が出たときの停止と申告は CLAUDE.md「テストとプロダクトの関係」に従う
53
53
  - 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
54
54
  - 同じ問題に対して3回以上アプローチを変えても解決できない場合は Stuck Signal を出力して作業を止める(詳細は下記参照)
55
55
 
@@ -11,7 +11,7 @@ tools:
11
11
  ---
12
12
 
13
13
  # Interviewer
14
- <!-- ペルソナ定義: /start コマンドで親 Claude がこのペルソナを採用して対話を行う。サブエージェントとして起動しない。 -->
14
+ <!-- ペルソナ定義: 既定では dev-workflow フェーズ A で親 Claude がこのペルソナを採用して対話を行う。Agent ツールでサブエージェントとして起動した場合も同じ契約(requirements-report の出力)で動く。 -->
15
15
 
16
16
  ## Core Mandate
17
17
  ユーザーの要望・目的・背景をヒアリングし、後続エージェントが設計判断できる requirements-report を作成する。
@@ -12,7 +12,7 @@ tools:
12
12
  ---
13
13
 
14
14
  # Planner
15
- <!-- ペルソナ定義: /start コマンドで親 Claude がこのペルソナを採用して対話を行う。サブエージェントとして起動しない。 -->
15
+ <!-- ペルソナ定義: 既定では dev-workflow フェーズ C で親 Claude がこのペルソナを採用して対話を行う。Agent ツールでサブエージェントとして起動した場合も同じ契約(plan-report の出力)で動く。 -->
16
16
 
17
17
  ## Core Mandate
18
18
  requirements-report・architecture-report・各種レビューレポートを統合し、実装可能なタスクに分解した plan-report を出力する。
@@ -21,7 +21,7 @@ SQLインジェクション・XSS・認証認可・秘密情報漏洩などの
21
21
  ## Memory
22
22
  - 作業終了時、次回以降の診断に役立つ知見があれば `.claude/agent-memory/security-reviewer/MEMORY.md` に追記する。記録対象は以下に限定する:
23
23
  - 再現価値のある脆弱性パターン・診断観点
24
- - **許容例外**: ユーザーが指摘を許容したリスク・脅威モデル外と判断した観点と理由(`[許容例外]` プレフィックスを付ける。次回診断での再指摘を防ぐ)
24
+ - **許容例外**: ユーザーが指摘を許容したリスク・脅威モデル外と判断した観点と理由(`[許容例外]` プレフィックスを付ける。次回診断での再指摘を防ぐ)。学習するのはユーザーが裁いた `[許容]` に限る。自律モードで親が付けた `[許容]`(理由が `自律:` で始まるもの)は学習しない
25
25
  - 本プロジェクト特有の脅威モデル・信頼境界・許容されている設計(理由とセットで)
26
26
  - 雑記録・一回性の進捗ログは記録しない。1 エントリ 1 行で簡潔に書き、MEMORY.md 全体は 200 行 / 25KB 以内に保つ(超過分は起動時に読まれない・超えたら価値の低いエントリから削除する)。
27
27
 
@@ -45,6 +45,11 @@ SQLインジェクション・XSS・認証認可・秘密情報漏洩などの
45
45
  - `.claude/skills/dev-workflow/references/security-review-checklist.md` を Read してチェック観点を確認する
46
46
 
47
47
  **During:**
48
+ - 変更箇所(hunk)ごとに、その箇所が**外へ出す値**を次の 3 段で確かめる。1 箇所ずつ終えてから次へ進む。メッセージの文言・ログ・例外処理・正規表現・定数だけの変更も対象にし、「文言の変更のみ」「fail-open なので判定は緩まない」のように変更の種類で片付けない
49
+ 1. **出口と差し込み値を書き出す**: 出口は、標準出力・標準エラー・ログ・例外メッセージ・応答本文・LLM の文脈に入る出力(ツールのエラー文・追加コンテキスト等)・シェルやパス操作に渡す文字列。その行が出口に載せる値(f 文字列の `{…}`・format の引数・例外オブジェクト・入力や環境を丸ごと直列化したもの)を 1 つずつ挙げる
50
+ 2. **値ごとに出どころと中身を書く**: 外部(ツールや API の入力・ファイル名・読み込んだファイルの内容・環境変数)から来るか。例外の文字列(OS のエラーは errno と絶対パスを含む)・入力の全体・argv や cwd・環境変数のように、何を含みうるか。中身は「秘密(パスワード・トークン)か」だけで判定しない。利用者名を含む絶対パス・環境の配置・入力の本文・改行や制御文字がその出口の読み手(端末・CI ログ・LLM の文脈)に届くこと自体を帰結として書く
51
+ 3. **既存の方針と突き合わせる**: 同じファイル・モジュールの他の出力が同種の値をどう扱っているか(無害化の関数を通す・識別子と固定文言だけを出す・相対パスにする等)と、docstring・コメントが述べる防御の性質を書き出す。変更箇所がそれと食い違えば指摘する
52
+ - 無害化・フィルタ・封じ込めの処理(正規表現の文字クラス・許可/拒否リスト・パスの正規化や照合)が変わった箇所は、目で読んで結論を出さない。Bash でその関数を直接呼ぶか、小さな入力(改行・制御文字・`..`・絶対パス・リンク等)を通して、何が通り何が落ちるかを実測する(ソースは編集しない)
48
53
  - 指摘は深刻度(Critical / High / Medium / Low)で分類する
49
54
  - この段階の役割は**網羅(coverage)であり取捨選択ではない**。確信度が低い指摘・Low 深刻度の指摘も握り潰さず report する(MEMORY.md の許容例外・脅威モデル外として合意済みの観点は除く)。各指摘に確信度を併記し、深刻度・確信度による最終的な絞り込みは下流(planner → ユーザー承認)に委ねる
50
55
  - **指摘ごとに該当する checklist_id を `[SR-XX-NNN]` 形式で併記する**(`.claude/skills/dev-workflow/references/security-review-checklist.md` の各項目に付与済み)。review-hint(レビュー判断ヒント機能)の照合キーになるため、必須とする。複数該当する場合は最も近いものを 1 つ選ぶ
@@ -40,13 +40,20 @@ tools:
40
40
 
41
41
  **Before:**
42
42
  - プロンプトにタスク定義(plan の prompt 本文)が含まれている場合はそれに従う。無い場合は plan-report を Read してテスト対象と受け入れ条件を把握する
43
+ - プロンプトにタスク定義があっても、テストを書く前に `.claude/reports/` 直下の今回の plan-report と、その単位の architecture-report・requirements-report を Read する(プロンプトが名前を挙げたものがあればそれ、無ければ各種類の最新)。プロンプトに書かれていない名前・形・表記は、これらに書かれていることが多い
43
44
 
44
45
  **During:**
46
+ - テストを書く前に、テストが前提にする実装側の形を書き出す: 呼ぶモジュール・関数・クラス・例外の名前、引数、戻り値の形、テストが照合する出力や文書の表記。それぞれについて、それを決めている行(プロンプト・plan-report・architecture-report・requirements-report・既存コード)を探し、ファイル名と行で控える
47
+ - 決めている行がある形は、その行のとおりに書く。表や例が示されていればその形で照合し、行に無い接頭辞・区切り・言い回しを足した文字列で照合しない
48
+ - 決めている行が無い形は、新しい名前や戻り値の形を作って測らない。同じ性質を、決めている行がある入口(名前の決まった関数・CLI の exit code・出力ファイル等)から測る
49
+ - それでも推測した名前が要る場合は、その名前をモジュール冒頭の import に入れず、使うテストの中で参照する(推測が外れて落ちるのがそのテストだけになるように)。推測した形は test-report に「根拠行なし」として列挙する
50
+ - 対照ケース(「これは許可される」「これは警告されない」等)の期待も、決めている行から導けるものだけを書く
45
51
  - 失敗するテストを先に書く(Red)
46
52
  - テスト作成後は必ず実行し、**正しい理由で失敗すること**を確認する:
47
53
  - ✅ 機能が未実装のため失敗(期待する動作)
48
54
  - ❌ 構文エラー・タイポ・インポート漏れで失敗(テスト自体が壊れている)
49
55
  - テストが最初から Pass する場合は、既存の挙動をテストしているだけなので修正する
56
+ - テストに書くのは、壊れたら利用者に届く振る舞い・安全境界・実際に起きた欠陥の回帰。Markdown の規約・文書(skills / agents / rules / docs / CLAUDE.md)の言い回し・見出し・語の有無や回数は書かない(文書に書かれた値を機械が読む場合は、文言ではなく機械の側と突き合わせる)
50
57
  - developer の実装後にテストを再実行して Green を確認する
51
58
  - テスト結果は合格・不合格・スキップの件数を記録する
52
59
 
@@ -16,7 +16,7 @@ tools:
16
16
 
17
17
  # Developer (worktree-parallel)
18
18
 
19
- > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
19
+ > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への Write/Edit ツールによる書き込みは `.claude/hooks/worktree_guard.py` が agent_type `wt_*` のとき作動してブロックする(Bash・NotebookEdit 経由の書き込みは射程外)。Write/Edit では worktree の外(セッションの scratchpad を含む)へ書けない。一時ファイルは worktree 内の `.claude/tmp/` に置く。
20
20
  >
21
21
  > 単発起動(`/develop` フェーズ D-1〜D-5 等、`isolation` なし)では本 agent を**使わない**。元の `developer` agent を使うこと。
22
22
 
@@ -54,7 +54,7 @@ plan-report に基づき実装・デバッグ・リファクタリングを行
54
54
  - 最小限であっても**汎用解**を書く。テスト入力に hard-code して通すこと・特定テストケースだけに効く workaround は禁止。テストは正しさの検証であって解の定義ではないため、全ての valid input に対し正しい一般ロジックを実装する(「最小限」と「汎用解」は両立する: スコープを足さず・しかし test 入力に過適合しない)
55
55
  - 設計上の不明点は、合理的な判断で進め、その判断を黙って埋めずにコードコメントに残す(例: `# 設計書に記載なし: ○○と判断して実装`)
56
56
  - 実装完了後に判断した内容を報告してユーザーが確認できるようにする
57
- - 根本的な設計の欠落(実装の方向性が定まらないレベル)の場合のみ作業を止めて報告する
57
+ - 根本的な設計の欠落(実装の方向性が定まらないレベル)は作業を止めて報告する。テストや `writes` 外のファイルに手を入れる必要が出たときの停止と申告は CLAUDE.md「テストとプロダクトの関係」に従う
58
58
  - 長文を Bash のコマンドライン引数に渡さない(ファイル経由で渡す)
59
59
  - 同じ問題に対して3回以上アプローチを変えても解決できない場合は Stuck Signal を出力して作業を止める(詳細は下記参照)
60
60
 
@@ -15,7 +15,7 @@ tools:
15
15
 
16
16
  # Systematic Debugger (worktree-parallel)
17
17
 
18
- > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
18
+ > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への Write/Edit ツールによる書き込みは `.claude/hooks/worktree_guard.py` が agent_type `wt_*` のとき作動してブロックする(Bash・NotebookEdit 経由の書き込みは射程外)。Write/Edit では worktree の外(セッションの scratchpad を含む)へ書けない。一時ファイルは worktree 内の `.claude/tmp/` に置く。
19
19
  >
20
20
  > 単発起動(worktree なしで親 Claude から直接 Agent ツールで起動するケース等)では本 agent を**使わない**。元の `systematic-debugger` agent を使うこと。
21
21
 
@@ -15,7 +15,7 @@ tools:
15
15
 
16
16
  # Tester (worktree-parallel)
17
17
 
18
- > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への書き込みは `.claude/hooks/worktree_guard.py` (PreToolUse, `PO_WORKTREE_GUARD=1`) でガードされる。
18
+ > 本 agent は `parallel-agents` skill が `isolation: "worktree"` 付きで起動する **並列実行専用** バリアント。`permissionMode: bypassPermissions` により worktree 内で permission プロンプトをスキップする。worktree 外への Write/Edit ツールによる書き込みは `.claude/hooks/worktree_guard.py` が agent_type `wt_*` のとき作動してブロックする(Bash・NotebookEdit 経由の書き込みは射程外)。Write/Edit では worktree の外(セッションの scratchpad を含む)へ書けない。一時ファイルは worktree 内の `.claude/tmp/` に置く。
19
19
  >
20
20
  > 単発起動(`/develop` フェーズ D-1〜D-5 等、`isolation` なし)では本 agent を**使わない**。元の `tester` agent を使うこと。
21
21
 
@@ -45,13 +45,20 @@ tools:
45
45
 
46
46
  **Before:**
47
47
  - プロンプトにタスク定義(plan の prompt 本文)が含まれている場合はそれに従う。無い場合は plan-report を Read してテスト対象と受け入れ条件を把握する
48
+ - プロンプトにタスク定義があっても、プロンプトが名前を挙げたレポート(plan-report・architecture-report・requirements-report)は、テストを書く前に Read する。プロンプトに書かれていない名前・形・表記は、これらに書かれていることが多い。worktree に届くのはコミット済みのファイルだけなので、名前を挙げたレポートが worktree に無いときは、別のレポート(各種類の最新など)で代えず、読めなかったことを test-report に書く
48
49
 
49
50
  **During:**
51
+ - テストを書く前に、テストが前提にする実装側の形を書き出す: 呼ぶモジュール・関数・クラス・例外の名前、引数、戻り値の形、テストが照合する出力や文書の表記。それぞれについて、それを決めている行(プロンプト・plan-report・architecture-report・requirements-report・既存コード)を探し、ファイル名と行で控える
52
+ - 決めている行がある形は、その行のとおりに書く。表や例が示されていればその形で照合し、行に無い接頭辞・区切り・言い回しを足した文字列で照合しない
53
+ - 決めている行が無い形は、新しい名前や戻り値の形を作って測らない。同じ性質を、決めている行がある入口(名前の決まった関数・CLI の exit code・出力ファイル等)から測る
54
+ - それでも推測した名前が要る場合は、その名前をモジュール冒頭の import に入れず、使うテストの中で参照する(推測が外れて落ちるのがそのテストだけになるように)。推測した形は test-report に「根拠行なし」として列挙する
55
+ - 対照ケース(「これは許可される」「これは警告されない」等)の期待も、決めている行から導けるものだけを書く
50
56
  - 失敗するテストを先に書く(Red)
51
57
  - テスト作成後は必ず実行し、**正しい理由で失敗すること**を確認する:
52
58
  - ✅ 機能が未実装のため失敗(期待する動作)
53
59
  - ❌ 構文エラー・タイポ・インポート漏れで失敗(テスト自体が壊れている)
54
60
  - テストが最初から Pass する場合は、既存の挙動をテストしているだけなので修正する
61
+ - テストに書くのは、壊れたら利用者に届く振る舞い・安全境界・実際に起きた欠陥の回帰。Markdown の規約・文書(skills / agents / rules / docs / CLAUDE.md)の言い回し・見出し・語の有無や回数は書かない(文書に書かれた値を機械が読む場合は、文言ではなく機械の側と突き合わせる)
55
62
  - developer の実装後にテストを再実行して Green を確認する
56
63
  - テスト結果は合格・不合格・スキップの件数を記録する
57
64
 
@@ -15,3 +15,4 @@ v2.66.0|record_review_decision.py: --severity is now a required argument (omitti
15
15
  v2.68.0|New PreToolUse Write hook report_path_guard.py is registered in the distributed settings.json. It blocks (exit 2) writes of report-prefixed filenames (requirements-report-, architecture-report-, plan-report-, design-review-report-, code-review-report-, security-review-report-, test-report-, debug-analysis-, debug-needed-) outside .claude/reports/, overwrites of existing timestamp-named reports, and non-timestamp naming for the strict 4 report types. Ordinary files whose names start with those prefixes can no longer be written outside .claude/reports/. Set C3_REPORT_GUARD_DISABLE=1 to bypass, or remove the hook registration from settings.json.|レポート 9 prefix 名ファイルの .claude/reports/ 外への Write・タイムスタンプ形式既存レポートの上書き・strict-4 の非タイムスタンプ命名を exit 2 で block する report_path_guard hook を配布 settings.json に登録。対象 prefix 名の一般ファイルも block されうる。回避は C3_REPORT_GUARD_DISABLE=1 または settings.json から登録を外す。
16
16
  v2.72.0|Removed the C3 PermissionRequest hook suite (permission_handler.py, permission_handler_toast.py, permission_rules.json) and the [notify] extra, superseded by upstream auto mode and permissions.allow. If you have not yet copied your auto_allow patterns from .claude/permission_rules.json, answer N (default) at the upcoming deletion prompt, copy them into permissions.allow in .claude/settings.local.json (personal, not the shared settings.json; same syntax; upstream checks each separator-delimited subcommand of compound commands independently, but command substitution handling is unverified -- narrow broad Bash wildcards to the minimum prefix; copying is a must where auto mode is unavailable), then rerun c3 update. windows-toasts can be uninstalled.|C3 の PermissionRequest hook 一式(permission_handler.py・permission_handler_toast.py・permission_rules.json)と [notify] extra を削除しました(上流 auto mode / permissions.allow へ委譲)。auto_allow パターンを未転記の場合は、この後の削除プロンプトで N(既定)を選び、.claude/permission_rules.json の内容を .claude/settings.local.json(個人設定・共有の settings.json ではない)の permissions.allow へ転記してから c3 update を再実行してください(書式は同一。上流は複合コマンドをセパレータ単位で独立照合しますが、コマンド置換〔$() 等〕の扱いは未確認のため、広い Bash ワイルドカードは必要最小のプレフィックスへ狭めること。auto mode が使えない環境では転記必須)。windows-toasts はアンインストール可。
17
17
  v2.80.0|Removed the mcp-config and codex-review skills. mcp-config wrote MCP server definitions to mcpServers in .claude/settings.json, which is not a documented location for MCP server definitions (project scope belongs in .mcp.json, local scope in ~/.claude.json), so servers registered with it were likely never loaded; use the built-in /mcp or 'claude mcp add' instead. The Codex adapter output (c3 init --platform codex) is unchanged. c3 update offers the two SKILL.md files for deletion.|mcp-config / codex-review skill を削除しました。mcp-config は MCP サーバー定義を .claude/settings.json の mcpServers に書いていましたが、そこは公式に記載された MCP サーバーの置き場所ではなく(プロジェクトスコープは .mcp.json、ローカルは ~/.claude.json)、登録したサーバーは読み込まれていなかった可能性が高いです。MCP サーバーの追加は標準の /mcp または claude mcp add を使ってください。Codex adapter(c3 init --platform codex)の生成物は変更ありません。c3 update 実行時に両 SKILL.md が削除候補として提示されます。
18
+ v2.83.0|Autonomous-mode opt-in now comes from the user's own words: choosing 'approve and continue autonomously' at dev-workflow A-4 / B-3 / C-2 approval, or stating it in the request that starts a unit; it covers that unit only. The mode line, delegation plan, resource consent and cycles are no longer used, and existing mode lines in session files no longer take effect. Removed .claude/skills/autonomous-mode/scripts/mode_line.py, .claude/hooks/session_mode_watch.py (and its settings.json registration) and .claude/docs/autonomous-mode-onboarding.md; if you customized settings.json, remove the session_mode_watch.py registration. The autonomous-mode skill is now also emitted into the Codex / Cursor / OpenCode adapter outputs (not verified on those platforms). The phase E integrated ruling (E-3) now offers the same 4 options as C-3 when there are findings (rule as recommended / address all / choose findings to reclassify / reject and request re-review); the former 'choose findings to address' is replaced by 'choose findings to reclassify' and 'accept all and finish' is removed. Autonomous mode is not used in environments that ask questions via c3 ask (clients without MCP elicitation); if a question falls back to c3 ask during autonomous mode, the unit returns to HITL. If settings env sets PO_WORKTREE_GUARD=1, that setting is no longer read and the guard applies only to wt_* agents (emergency disable: C3_WORKTREE_GUARD_DISABLE=1).|自律モードの opt-in を、モード行(セッションファイルの「モード: 自律 plan=...」)と委任プラン・資源同意・cycles から、ユーザー自身の発話(dev-workflow の A-4 / B-3 / C-2 の承認で「承認・以降は自律で進める」を選ぶ、または単位を始める依頼の中で示す)に置き換えました。範囲はその単位だけで、既存のモード行は効かなくなります。.claude/skills/autonomous-mode/scripts/mode_line.py・.claude/hooks/session_mode_watch.py(settings.json の登録も削除)・.claude/docs/autonomous-mode-onboarding.md を削除しました。settings.json をカスタムしている場合は session_mode_watch.py の登録を外してください。autonomous-mode skill を Codex / Cursor / OpenCode の adapter 生成物へも出力します(他プラットフォームでの実動作は未検証)。フェーズ E の統合裁定(E-3)の指摘ありの選択肢を C-3 と同じ 4 択(推奨どおり裁く/全て対応する/区分を変える指摘を選ぶ/否認・再レビューを依頼する)にし、旧「対応する指摘を選ぶ」は「区分を変える指摘を選ぶ」に置き換え、旧「全て許容して完了」は削除しました。c3 ask で質問する環境(MCP の elicitation が使えないクライアント)では自律を使いません(自律中に c3 ask へ落ちたら HITL に戻ります)。settings の env で PO_WORKTREE_GUARD=1 を設定していた場合、その設定は読まれなくなり、ガードの対象が wt_* agent に限られる(緊急無効化は C3_WORKTREE_GUARD_DISABLE=1)。
@@ -99,3 +99,8 @@ skills/codex-review/SKILL.md
99
99
 
100
100
  # ---- v2.82.0: C-3省略宣言プロトコル廃止(E→C 差し戻し時の C-3 判定へ置換) ----
101
101
  skills/dev-workflow/references/c3-omission-declaration.md
102
+
103
+ # ---- v2.83.0: 自律モードの opt-in をユーザーの発話へ置換(モード行の検証・監視と導入手引きを廃止) ----
104
+ skills/autonomous-mode/scripts/mode_line.py
105
+ hooks/session_mode_watch.py
106
+ docs/autonomous-mode-onboarding.md
@@ -185,7 +185,7 @@ v2.72.0 行を参照。
185
185
  | 3 | `.claude/skills/*/` | ○ | ○ | オーケストレーション/ユーティリティ skill 定義(`scripts/` / `templates/` 等サブディレクトリ含む)|
186
186
  | 4 | `.claude/rules/*.md` | ○ | ○ | C3 配布デフォルトルール(常時注入対象)。配布元は `judgment-principles.md` の 1 件(ほかは `promoted/` のみ)。利用先ではこれに `/setup` 生成の `coding-standards.md` 等が加わる |
187
187
  | 5 | `.claude/rules/promoted/*` | ○ | ×(`index.md` は INIT_ONLY) | プロジェクト固有昇格ルール。配布元の `promoted/index.md` は空雛形のみ配布。利用先で `/promote-pattern` が追記する **ユーザー所有領域**。`index.md` は `INIT_ONLY_PATTERNS` で上書きから保護される。昇格ルール本体(`YYYYMMDD-{id}.md`)は template 側に存在しないため `_walk_diff` の走査対象にならず元から無事 |
188
- | 6 | `.claude/docs/*.md` | △(一部のみ) | ○ | 利用先向けリファレンス。配布対象は `autonomous-mode-onboarding.md` / `config-policy.md`(本ドキュメント)/ `nul-boundary.md` / `parallel-agents-setup.md` / `platform-adapters.md` / `settings.json.md` の 6 ファイル。配布元固有の設計メモ等は `_excludes.py` で個別除外。`taxonomy.md` は tracked(GitHub 公開)だが EXCLUDE 対象のため wheel 非配布(詳細は §7 落とし穴 2 参照)。 |
188
+ | 6 | `.claude/docs/*.md` | △(一部のみ) | ○ | 利用先向けリファレンス。配布対象は `config-policy.md`(本ドキュメント)/ `nul-boundary.md` / `parallel-agents-setup.md` / `platform-adapters.md` / `settings.json.md` の 5 ファイル。配布元固有の設計メモ等は `_excludes.py` で個別除外。`taxonomy.md` は tracked(GitHub 公開)だが EXCLUDE 対象のため wheel 非配布(詳細は §7 落とし穴 2 参照)。 |
189
189
  | 7 | `.claude/CLAUDE.md` | ○ | ○ | 配布先で常時注入される共通ルール |
190
190
  | 8 | `.claude/settings.json` | ○ | ○ | プロジェクト共通設定(hooks 登録・permissions など) |
191
191
  | 9 | `.claude/permission_rules.json` | ×(削除済み・v2.72.0) | — | C3 独自の自動承認パターンは v2.72.0 で削除された。上流 `permissions.allow` へ委譲(移行手順は `.claude/breaking-changes.txt` の v2.72.0 行を参照) |
@@ -216,7 +216,7 @@ C3 を配布先で `pip install c3-***.whl` でインストールしたユーザ
216
216
 
217
217
  ## 参照・関連
218
218
 
219
- - **実装・リレビューの必須チェック**: `.claude/skills/autonomous-mode/SKILL.md` §(a)
219
+ - **実装・リレビューの必須チェック**: `tests/test_nul_boundary_lint.py`(一般則を機械的に強制する AST ベースの lint。配布元の CI で実行)
220
220
  - **auto-memory**: `feedback_nul_boundary_for_machine_readable_line_sets` — 一般則の背景と根拠
221
221
  - **計画**: `plan-report-*.md` §5 T4 — 文書作成の指示と成功条件
222
222
 
@@ -18,6 +18,10 @@ PYTHONPATH に追加してから `from _hook_utils import ...` する経路を
18
18
  - ``timestamp_pattern(prefix)`` — ``{prefix}YYYYMMDD-HHMMSS.md`` のフルマッチ用
19
19
  正規表現(``re.compile`` オブジェクト)を返す。全角数字偽装防止のため ``re.ASCII``
20
20
  を指定。
21
+ - ``is_reports_direct_child(path)`` — ``path`` が ``.claude/reports/`` 直下のファイルの
22
+ 形をしているか(親が ``reports``・祖父が ``.claude``)を名前だけで判定する。比較は
23
+ ``norm_component`` で正規化してから行う(report_contract_check /
24
+ report_path_guard の第 1 層 / design_review_count_check)。
21
25
  """
22
26
 
23
27
  from __future__ import annotations
@@ -81,6 +85,21 @@ def norm_component(s: str) -> str:
81
85
  return str(s).lower().rstrip('. ')
82
86
 
83
87
 
88
+ def is_reports_direct_child(path: Path) -> bool:
89
+ """``path`` が ``.claude/reports/`` 直下の形をしているかを名前だけで判定する。
90
+
91
+ 親ディレクトリ名が ``reports``・その親が ``.claude`` であることを
92
+ ``norm_component`` で正規化して比較する(ケース非依存 FS の別名・末尾ドット/スペースを
93
+ 吸収する)。resolve はしない(上流に同名の ``reports/`` があっても誤アンカーしない)。
94
+ 実体の照合(リンク偽装の排除)は行わないため、必要な呼び出し側が別途行う。
95
+ """
96
+ parent = path.parent
97
+ return (
98
+ norm_component(parent.name) == 'reports'
99
+ and norm_component(parent.parent.name) == '.claude'
100
+ )
101
+
102
+
84
103
  def sanitize_for_terminal(text: str) -> str:
85
104
  """端末インジェクション対策: 制御文字と表示偽装文字を除去する。
86
105