claude-code-conductor 2.16.0__tar.gz → 2.18.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/CLAUDE.md +1 -0
- claude_code_conductor-2.18.0/.claude/deletions.txt +39 -0
- claude_code_conductor-2.18.0/.claude/docs/config-policy.md +331 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/CHANGELOG.md +120 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/PKG-INFO +1 -1
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/hatch_build.py +4 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/__init__.py +1 -1
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/_excludes.py +4 -0
- claude_code_conductor-2.18.0/src/c3/cli_update.py +520 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_init.py +2 -2
- claude_code_conductor-2.18.0/tests/test_cli_update_deletions.py +538 -0
- claude_code_conductor-2.16.0/src/c3/cli_update.py +0 -159
- claude_code_conductor-2.16.0/tests/test_cli_update.py +0 -41
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/developer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/systematic-debugger.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/tester.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/wt_developer.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/wt_systematic-debugger.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/agents/wt_tester.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/docs/parallel-agents-setup.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/docs/settings.json.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/_hook_utils.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/check_agent_invocation.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/permission_handler.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/permission_handler_toast.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/planner_check.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/recall_inject.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/schema.sql +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/select_tier.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/session_stop.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/permission_rules.json +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/settings.json +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/codex-review/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/scripts/record_tier_outcome.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/extract-lib/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/parallel-agents/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/pattern-status/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/recall/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/review-phase/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/setup/reference.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/skills/start/SKILL.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/.gitignore +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/chroma-hnswlib-LICENSE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/chroma-hnswlib-NOTICE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/fastembed-LICENSE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/fastembed-NOTICE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/onnxruntime-LICENSE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/README.md +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/pyproject.toml +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_recall.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/cli_tier.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/db.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/embedding.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/question.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/recall_chunker.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/src/c3/recall_index.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/__init__.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/conftest.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_check_agent_invocation.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_hook_utils.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_permission_handler.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_permission_handler_toast.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_planner_check_dev.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_recall_inject.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_record_review_decision.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_record_tier_outcome.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_select_tier.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_select_tier_escalation.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_session_start.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_session_stop.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/_skill_helpers.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_init_session_no_task_type.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_planner_lightweight.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_recall_skill.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_setup_templates.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_start_skill_new_flow.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_entry.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_recall.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_cli_tier.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_db.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_embedding.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_mcp_server_elicit.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_recall_chunker.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_recall_index.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_references_migration.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_skill_no_builtin_conflict.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_template_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.16.0 → claude_code_conductor-2.18.0}/tests/test_worktree_guard.py +0 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# C3 c3 update 削除リスト
|
|
2
|
+
# このファイルに記載されたパスは `c3 update` 実行時に
|
|
3
|
+
# 利用先の .claude/ から削除候補として扱われる。
|
|
4
|
+
#
|
|
5
|
+
# 仕様:
|
|
6
|
+
# - 1 行 1 パス、.claude/ 相対表記
|
|
7
|
+
# - # で始まる行はコメント、空行はスキップ
|
|
8
|
+
# - 絶対パス / ../ を含むパス / シンボリックリンク は無視
|
|
9
|
+
# - ディレクトリは削除しない(ファイルのみ)
|
|
10
|
+
#
|
|
11
|
+
# 詳細は .claude/docs/config-policy.md §3 #13 と §7 落とし穴 5 を参照。
|
|
12
|
+
|
|
13
|
+
# ---- v2.1.0: tdd-develop / worktree-tdd-workflow 廃止 ----
|
|
14
|
+
agents/tdd-develop.md
|
|
15
|
+
skills/worktree-tdd-workflow/SKILL.md
|
|
16
|
+
|
|
17
|
+
# ---- v2.11.0: summarize-memory 廃止 ----
|
|
18
|
+
agents/summarize-memory.md
|
|
19
|
+
skills/summarize-memory/SKILL.md
|
|
20
|
+
|
|
21
|
+
# ---- v2.12.0: タクソノミー棚卸(hooks/ → skills/dev-workflow/scripts/ へ移動) ----
|
|
22
|
+
hooks/record_review_decision.py
|
|
23
|
+
hooks/record_tier_outcome.py
|
|
24
|
+
hooks/review_hint_inject.py
|
|
25
|
+
hooks/subagent_log.py
|
|
26
|
+
|
|
27
|
+
# ---- (v2.x): task-routing skill 廃止 ----
|
|
28
|
+
skills/task-routing/SKILL.md
|
|
29
|
+
|
|
30
|
+
# ---- v2.15.1: /code-review skill を /review-phase にリネーム ----
|
|
31
|
+
skills/code-review/SKILL.md
|
|
32
|
+
|
|
33
|
+
# ---- 短期 revert(一時配布された可能性あり) ----
|
|
34
|
+
skills/phase-a-requirements/SKILL.md
|
|
35
|
+
skills/phase-b-architecture/SKILL.md
|
|
36
|
+
skills/phase-c-plan/SKILL.md
|
|
37
|
+
skills/phase-d-implement/SKILL.md
|
|
38
|
+
skills/phase-debug/SKILL.md
|
|
39
|
+
skills/phase-e-review/SKILL.md
|
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
# C3 Config Policy — 設定階層・配布判断の公式リファレンス
|
|
2
|
+
|
|
3
|
+
**バージョン**: v2.17.0
|
|
4
|
+
**対象読者**: C3 利用先ユーザー / C3 自体をフォーク・拡張する開発者
|
|
5
|
+
**canonical 宣言**: 設定優先順位・配布判断に関しては本ドキュメントが唯一の公式情報源。
|
|
6
|
+
他ファイル(`CLAUDE.md` / `_excludes.py` docstring)から本ドキュメントへの参照リンクが張られている場合、
|
|
7
|
+
詳細は常に本ドキュメントを参照すること。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. 設定ファイル一覧(所在マップ)
|
|
12
|
+
|
|
13
|
+
### 1-1. 配布元リポジトリ(C3 開発者向け)
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
/CLAUDE.md 配布元専用(.gitignore で除外)
|
|
17
|
+
.claude/CLAUDE.md 配布元・配布先共通(常時注入)
|
|
18
|
+
.claude/settings.json プロジェクト共通設定(配布される)
|
|
19
|
+
.claude/settings.local.json 個人 override(配布されない)
|
|
20
|
+
.claude/permission_rules.json C3 独自の自動承認パターン(配布される)
|
|
21
|
+
.claude/rules/ C3 配布デフォルトルール(配布される)
|
|
22
|
+
.claude/rules/promoted/ プロジェクト固有昇格ルール(配布される、update は触らない)
|
|
23
|
+
.claude/hooks/ Claude Code lifecycle hooks(配布される)
|
|
24
|
+
.dev/hooks/ 配布元専用 hook(配布されない)
|
|
25
|
+
src/c3/_excludes.py wheel 除外パターン(配布元のビルド制御)
|
|
26
|
+
hatch_build.py _excludes.py の重複定義(ビルド時専用)
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### 1-2. 利用先プロジェクト(C3 ユーザー向け)
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
.claude/CLAUDE.md c3 init で配置・c3 update で更新
|
|
33
|
+
.claude/settings.json c3 init で配置・c3 update で更新
|
|
34
|
+
.claude/settings.local.json ユーザーが個別作成(c3 は触らない)
|
|
35
|
+
.claude/permission_rules.json c3 init で配置・c3 update で更新
|
|
36
|
+
.claude/rules/ c3 init で配置・c3 update で更新
|
|
37
|
+
.claude/rules/promoted/index.md c3 init で空雛形のみ配置(c3 update は触らない)
|
|
38
|
+
.claude/hooks/ c3 init で配置・c3 update で更新
|
|
39
|
+
.claude/state/ 実行時生成(gitignore 推奨)
|
|
40
|
+
.claude/memory/ 実行時生成
|
|
41
|
+
.claude/agent-memory/ 実行時生成
|
|
42
|
+
.claude/reports/ 実行時生成(gitignore 推奨)
|
|
43
|
+
.claude/worktrees/ 並列実行時一時生成
|
|
44
|
+
.claude/logs/ 実行時生成
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 1-3. ディレクトリの命名・配置チート
|
|
48
|
+
|
|
49
|
+
各ディレクトリの **命名・役割・配置判断** は `.claude/docs/taxonomy.md` を参照。
|
|
50
|
+
本ドキュメントは配布判断・優先順位に特化しており、taxonomy と住み分けている。
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 2. 設定優先順位と書き込み権限
|
|
55
|
+
|
|
56
|
+
設定は性質の異なる **3 つのレイヤー** に分かれる。1 列に並べると誤解を生むため分離して記述する。
|
|
57
|
+
|
|
58
|
+
### レイヤー A: ツール権限(Claude Code 公式)
|
|
59
|
+
|
|
60
|
+
同じキー(`permissions.allow` など)が複数ファイルで定義されている場合、
|
|
61
|
+
**上位ファイルが下位ファイルを上書き**する(高 → 低の順):
|
|
62
|
+
|
|
63
|
+
1. `.claude/settings.local.json` — 個人 override(`.gitignore` 推奨。c3 update の対象外)
|
|
64
|
+
2. `.claude/settings.json` — プロジェクト共通設定(git 管理)
|
|
65
|
+
3. `~/.claude/settings.json` — グローバル個人設定(マシンローカル)
|
|
66
|
+
|
|
67
|
+
> **重要**: `hooks` セクションのみ「マージしない・完全上書き」挙動。
|
|
68
|
+
> `settings.local.json` に `hooks` を書くと `settings.json` の `hooks` が **すべて無効化** される。
|
|
69
|
+
> 詳細は §7「既知の落とし穴」を参照。
|
|
70
|
+
> キー仕様の詳細は `.claude/docs/settings.json.md` を参照。
|
|
71
|
+
|
|
72
|
+
### レイヤー B: 自動承認パターン(C3 独自拡張)
|
|
73
|
+
|
|
74
|
+
- `.claude/permission_rules.json` の `auto_allow` 配列
|
|
75
|
+
- `permission_handler.py`(`PermissionRequest` hook)が読み込んで、パターンにマッチすれば自動承認
|
|
76
|
+
- レイヤー A で `deny` 判定されたものを覆すことはできない(hook の決定権の範囲内)
|
|
77
|
+
- `notify_on_auto: false` で通知を抑止できる
|
|
78
|
+
|
|
79
|
+
> **注意**: `permission_rules.json` は Claude Code 公式の `permissions.allow` とは **独立した別レイヤー**。
|
|
80
|
+
> 同列に並べると「どちらが優先されるか」で誤解が生じる。レイヤー A と B は並立している。
|
|
81
|
+
|
|
82
|
+
> **注意**: `auto_allow` パターンは最小限に留めること。広範なパターン(例: `Bash(*)`)は C3 の意図する動作範囲を超えた危険コマンドも自動承認する可能性がある。
|
|
83
|
+
|
|
84
|
+
### レイヤー C: LLM 指示・知識(CLAUDE.md / rules)
|
|
85
|
+
|
|
86
|
+
- `.claude/CLAUDE.md` — 常時注入されるプロジェクト指示
|
|
87
|
+
- `.claude/rules/*.md` — `paths:` フロントマターがあればパスマッチ時のみ、なければ常時注入
|
|
88
|
+
- `.claude/rules/promoted/index.md` — `@rules/promoted/index.md` で CLAUDE.md から include される
|
|
89
|
+
(`/promote-pattern` skill が追記する **ユーザー所有領域**)
|
|
90
|
+
|
|
91
|
+
「優先順位」という概念は厳密には適用されない(全文ロードされる)が、
|
|
92
|
+
**`rules/promoted/` は c3 update が触らない**点が肝となる。
|
|
93
|
+
|
|
94
|
+
### 書き込み権限マトリクス
|
|
95
|
+
|
|
96
|
+
| ファイル | c3 init が初期配置 | c3 update が上書き | ユーザーが編集してよい |
|
|
97
|
+
|---|---|---|---|
|
|
98
|
+
| `.claude/settings.json` | ○ | ○ | △(チーム合意のもと) |
|
|
99
|
+
| `.claude/settings.local.json` | × | × | ○(個人 override / 秘匿情報) |
|
|
100
|
+
| `.claude/permission_rules.json` | ○ | ○ | △(ファイル全体を上書き編集する場合は注意) |
|
|
101
|
+
| `.claude/CLAUDE.md` | ○ | ○ | △(c3 update で上書きされる前提で) |
|
|
102
|
+
| `.claude/rules/*.md` | ○ | ○ | △(同上) |
|
|
103
|
+
| `.claude/rules/promoted/index.md` | ○(空雛形のみ) | × | ○(`/promote-pattern` が追記、手動編集も可) |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 3. 配布判断マトリクス(13 カテゴリ)
|
|
108
|
+
|
|
109
|
+
`_excludes.py` の `EXCLUDE_PATTERNS` / `KEEP_PATTERNS` を実装照合した結果。
|
|
110
|
+
各カテゴリに配布有無・c3 update の更新有無・理由を明示する。
|
|
111
|
+
|
|
112
|
+
| # | カテゴリ | 配布 | c3 update が更新 | 理由 |
|
|
113
|
+
|---|---|---|---|---|
|
|
114
|
+
| 1 | `.claude/hooks/*.py` | ○ | ○ | Claude Code lifecycle hook の実体。配布先で動作する。例外: `subagent_log.py` のみ除外(個人デバッグ用) |
|
|
115
|
+
| 2 | `.claude/agents/*.md` | ○ | ○ | ペルソナ定義。配布先で読まれる。例外: `tdd-develop.md` のみ除外(v2.1.0 廃止) |
|
|
116
|
+
| 3 | `.claude/skills/*/` | ○ | ○ | オーケストレーション/ユーティリティ skill 定義(`scripts/` / `templates/` 等サブディレクトリ含む)。例外: `worktree-tdd-workflow/*` のみ除外(v2.1.0 廃止) |
|
|
117
|
+
| 4 | `.claude/rules/*.md` | ○ | ○ | C3 配布デフォルトルール(常時注入対象) |
|
|
118
|
+
| 5 | `.claude/rules/promoted/*` | ○ | × | プロジェクト固有昇格ルール。配布元の `promoted/index.md` は空雛形のみ配布。利用先で `/promote-pattern` が追記する **ユーザー所有領域**。c3 update が触ると昇格内容が失われる |
|
|
119
|
+
| 6 | `.claude/docs/*.md` | △(一部のみ) | ○ | 利用先向けリファレンス。配布対象は `platform-adapters.md` / `settings.json.md` / `parallel-agents-setup.md` / `config-policy.md`(本ドキュメント)の 4 ファイル。配布元固有の設計メモ等は `_excludes.py` で個別除外。`taxonomy.md` は tracked(GitHub 公開)だが EXCLUDE 対象のため wheel 非配布(詳細は §7 落とし穴 2 参照)。 |
|
|
120
|
+
| 7 | `.claude/CLAUDE.md` | ○ | ○ | 配布先で常時注入される共通ルール |
|
|
121
|
+
| 8 | `.claude/settings.json` | ○ | ○ | プロジェクト共通設定(hooks 登録・permissions など) |
|
|
122
|
+
| 9 | `.claude/permission_rules.json` | ○ | ○ | C3 独自の自動承認パターン(PermissionRequest hook が参照) |
|
|
123
|
+
| 10 | `.claude/settings.local.json` | × | — | 個人 override・秘匿情報。`_excludes.py` でも除外、`.gitignore` でも除外、c3 update も触らない |
|
|
124
|
+
| 11 | `.claude/reports/*` / `memory/*` / `agent-memory/*` / `state/*` / `tmp/*` / `worktrees/*` / `logs/*` | × (`.gitkeep` のみ ○) | — | 実行時生成領域。空ディレクトリのみ `KEEP_PATTERNS` の `.gitkeep` で配布。データ本体は除外 |
|
|
125
|
+
| 12 | `.dev/*` / `/CLAUDE.md` / `/AGENTS.md` / `/.codex/` / `/.cursor/` / `/.agents/` | × | — | 配布元専用または adapter 生成物。wheel には構造的に含まれない(`src/c3/_template/.claude/` 配下のみ同梱)が、配布元 `.gitignore` で commit 混入も防ぐ |
|
|
126
|
+
| 13 | `.claude/deletions.txt` | ○ | ○ | `c3 update` が読み込み、利用先 `.claude/` から該当ファイルを削除候補として扱う。配布元の `.claude/deletions.txt` に追記したエントリは次回 pip install → `c3 update` で利用先に伝播。`KEEP_PATTERNS` で明示配布。`c3 update` 自体は本ファイルを削除しない(§7 落とし穴 5 参照) |
|
|
127
|
+
|
|
128
|
+
> **注意 (カテゴリ #6)**: `taxonomy.md` は `_excludes.py` の EXCLUDE 対象だが、`.gitignore` では tracked 状態(GitHub に公開済み)。
|
|
129
|
+
> **wheel には含まれない**点に注意。gitignore と wheel 配布は別レイヤーであり、
|
|
130
|
+
> 「tracked = 配布される」ではない。
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 4. settings.local.json 運用の原則
|
|
135
|
+
|
|
136
|
+
`settings.local.json` は以下の **3 原則**で運用する:
|
|
137
|
+
|
|
138
|
+
### 原則 1: 個人 override / 秘匿情報はここに書く
|
|
139
|
+
|
|
140
|
+
- 個人の `permissions.allow` 追加(チーム全員には不要なもの)
|
|
141
|
+
- API キー・個人トークン等の秘匿情報(`env` セクションに記述)
|
|
142
|
+
- 個人的な `mcpServers` 設定
|
|
143
|
+
|
|
144
|
+
`.gitignore` に含まれているため、通常の `git add` では staging されずリモートに上がらない(ただし `git status` で確認を推奨)。
|
|
145
|
+
|
|
146
|
+
> **注意**: `git add -f` の強制オプションを使うと `.gitignore` が無効化されるため、秘匿情報が誤ってコミットされるリスクがある。CI/CD パイプラインでの自動 `add` 設定にも注意すること。
|
|
147
|
+
|
|
148
|
+
> **注意**: `c3 init` はプロジェクトルートの `.gitignore` を自動編集しない。`settings.local.json` を新規作成する場合は、ユーザー自身が `.gitignore` に `.claude/settings.local.json` を追加すること。
|
|
149
|
+
|
|
150
|
+
### 原則 2: c3 update は触らない
|
|
151
|
+
|
|
152
|
+
`settings.local.json` は `c3 init` も `c3 update` も作成・上書きしない。
|
|
153
|
+
個人設定を安全に保ちつつ、C3 のアップデートを受け取れる設計。
|
|
154
|
+
|
|
155
|
+
### 原則 3: `hooks` セクションは書かない
|
|
156
|
+
|
|
157
|
+
**最重要の落とし穴**。`settings.local.json` に `hooks` セクションを追記すると、
|
|
158
|
+
`settings.json` の `hooks` エントリが **すべて無効化** される(マージではなく完全上書き)。
|
|
159
|
+
|
|
160
|
+
C3 の lifecycle hook(`permission_handler.py` 等)が動かなくなるため、
|
|
161
|
+
`hooks` のカスタマイズは必ず `settings.json` 側に行う(チーム合意を経て)。
|
|
162
|
+
|
|
163
|
+
詳細は §7「既知の落とし穴」の項目 1 を参照。
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 5. プラットフォーム別 config 整合(canonical 宣言)
|
|
168
|
+
|
|
169
|
+
### canonical は `.claude/` に置く
|
|
170
|
+
|
|
171
|
+
C3 の設定・ルール・スキルの **唯一の公式ソース** は `.claude/` ディレクトリ。
|
|
172
|
+
Codex / Cursor 向けの adapter 生成物は **派生生成物** であり、primary source ではない。
|
|
173
|
+
|
|
174
|
+
| プラットフォーム | 設定参照経路 | 生成コマンド |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| Claude Code | `.claude/settings.json` / `.claude/CLAUDE.md` | — |
|
|
177
|
+
| Codex | `.codex/` / `/AGENTS.md` | `c3 init --platform codex` |
|
|
178
|
+
| Cursor | `.cursor/rules/c3-core.mdc` | `c3 init --platform cursor` |
|
|
179
|
+
|
|
180
|
+
### adapter 生成物の位置付け
|
|
181
|
+
|
|
182
|
+
- `.codex/` / `/AGENTS.md` / `/.cursor/` / `/.agents/` は **c3 init が生成する派生物**
|
|
183
|
+
- これらを直接編集すると `c3 init --platform` の再実行で上書きされる
|
|
184
|
+
- 配布元リポジトリでは `.gitignore` に含まれる(配布対象外)
|
|
185
|
+
|
|
186
|
+
### 複数プラットフォームを切り替える場合
|
|
187
|
+
|
|
188
|
+
同じプロジェクトで Claude Code / Codex / Cursor を切り替えて使う場合、
|
|
189
|
+
設定の変更は必ず `.claude/` 側に行い、必要に応じて `c3 init --platform` で adapter を再生成する。
|
|
190
|
+
|
|
191
|
+
詳細は `.claude/docs/platform-adapters.md` を参照。
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 6. 3 ファイル同期ルール
|
|
196
|
+
|
|
197
|
+
### なぜ 3 ファイルが同期されなければならないか
|
|
198
|
+
|
|
199
|
+
C3 の wheel 配布除外パターンは **3 つのファイルに分散して定義** されている:
|
|
200
|
+
|
|
201
|
+
| ファイル | 役割 | 変更が必要な場面 |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| `.gitignore` | git 追跡から除外(配布元リポジトリの個人作業ファイルを管理外に) | 配布元で新たに除外すべきファイルが増えた時 |
|
|
204
|
+
| `src/c3/_excludes.py` | `c3 init` / `c3 update` 時の除外判断(Python 実装) | 配布先への配布/非配布を変更する時 |
|
|
205
|
+
| `hatch_build.py` | wheel ビルド時の除外判断(`_excludes.py` の重複定義) | `_excludes.py` を変更した時(必ず同期) |
|
|
206
|
+
|
|
207
|
+
`hatch_build.py` の重複が必要な理由: hatch build hook はパッケージ import 前に走るため、
|
|
208
|
+
`_excludes.py` を import できない。2 ファイルの完全一致が必須。
|
|
209
|
+
|
|
210
|
+
### 同期確認の方法
|
|
211
|
+
|
|
212
|
+
`.dev/hooks/_sync_check.py`(PostToolUse hook)が、3 ファイルのいずれかを変更した時に
|
|
213
|
+
残り 2 ファイルの同期を `stderr` で警告する。警告が出たら必ず対応する。
|
|
214
|
+
|
|
215
|
+
### 変更手順
|
|
216
|
+
|
|
217
|
+
1. `.gitignore` / `_excludes.py` / `hatch_build.py` のいずれかを変更
|
|
218
|
+
2. `_sync_check.py` の警告を確認
|
|
219
|
+
3. 残り 2 ファイルに同じパターンを追加(または削除)
|
|
220
|
+
4. `python -m build --wheel` で wheel を再生成して実体検証
|
|
221
|
+
|
|
222
|
+
### 過去の同期漏れ defect
|
|
223
|
+
|
|
224
|
+
| バージョン | 内容 | カテゴリ #(§3 参照) |
|
|
225
|
+
|---|---|---|
|
|
226
|
+
| v1.1.0 | `state/tier_selection.json` が wheel に混入した | #11 |
|
|
227
|
+
| v2.14.1 | `worktrees/` 配下ファイルが wheel に混入した | #11 |
|
|
228
|
+
|
|
229
|
+
いずれも `_excludes.py` / `hatch_build.py` の同期漏れが原因。
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 7. 既知の落とし穴
|
|
234
|
+
|
|
235
|
+
**ここを読まないと事故る**ポイントを集約。症状が出たらまず確認すること。
|
|
236
|
+
|
|
237
|
+
### 落とし穴 1: `hooks` セクションが `settings.local.json` で完全上書きされる
|
|
238
|
+
|
|
239
|
+
**症状**: `permission_handler.py` 等の C3 hook が突然動かなくなる。
|
|
240
|
+
|
|
241
|
+
**原因**: Claude Code の `settings.json` 系では、`hooks` セクションのみマージではなく
|
|
242
|
+
**完全上書き**の挙動を取る(`permissions.allow` 等他のキーはマージ)。
|
|
243
|
+
`settings.local.json` に `hooks: []` や任意の hook 定義を書くと、
|
|
244
|
+
`settings.json` の `hooks` エントリが全て無効化される。
|
|
245
|
+
|
|
246
|
+
**対処**: `settings.local.json` の `hooks` セクションを削除し、`settings.json` 側に移す。
|
|
247
|
+
カスタム hook を追加したい場合はチームで `settings.json` を編集する(git 管理)。
|
|
248
|
+
|
|
249
|
+
### 落とし穴 2: `taxonomy.md` は tracked だが wheel 配布されない
|
|
250
|
+
|
|
251
|
+
**症状**: `_excludes.py` で除外されているはずの `taxonomy.md` が GitHub に公開されている、
|
|
252
|
+
または「なぜ `.gitignore` に入っていないのか」と疑問に思う。
|
|
253
|
+
|
|
254
|
+
**原因**: `taxonomy.md` は `.gitignore` では tracked(GitHub に公開済み)だが、
|
|
255
|
+
`_excludes.py` の `EXCLUDE_PATTERNS` で除外されているため **wheel には含まれない**。
|
|
256
|
+
「git tracked = 配布される」ではない。wheel 配布と git 追跡は独立したレイヤー。
|
|
257
|
+
|
|
258
|
+
**対処**: 混乱した場合は §3 のカテゴリ #6 の注意書きを参照。
|
|
259
|
+
`config-policy.md`(本ドキュメント)は wheel に含まれる設計になっている(`_excludes.py` に除外パターンなし)。
|
|
260
|
+
|
|
261
|
+
### 落とし穴 3: `rules/promoted/` を `c3 update` が上書きしない
|
|
262
|
+
|
|
263
|
+
**症状**: `c3 update` 後に `/promote-pattern` で追加したルールが消えている(実際には消えないが消えると思って不安)、
|
|
264
|
+
または「なぜ promoted/ は更新されないのか」と疑問に思う。
|
|
265
|
+
|
|
266
|
+
**原因**: `.claude/rules/promoted/index.md` は **ユーザー所有領域**。
|
|
267
|
+
c3 update が上書きすると利用先で `/promote-pattern` が追記したルールが消失するため、意図的に除外している(§3 カテゴリ #5 参照)。
|
|
268
|
+
|
|
269
|
+
**対処**: `promoted/` への変更は `c3 update` に委ねず、手動または `/promote-pattern` skill で管理する。
|
|
270
|
+
C3 side で `promoted/` の雛形を更新した場合は、リリースノートで手動マージ手順を案内する。
|
|
271
|
+
|
|
272
|
+
### 落とし穴 4: `deletions.txt` 自身は削除されない・絶対パスは無視される
|
|
273
|
+
|
|
274
|
+
**症状**: `deletions.txt` が利用先に残り続ける / 絶対パスを書いたのに削除されない / `..` 含みパスが効かない。
|
|
275
|
+
|
|
276
|
+
**原因**:
|
|
277
|
+
- `deletions.txt` は **`c3 update` が読み取るための指示書** であり、削除対象として
|
|
278
|
+
`deletions.txt` 自身を含めても無視される(自分自身を削除すると次回 update で
|
|
279
|
+
ブートストラップが効かなくなるため)
|
|
280
|
+
- セーフガードにより以下は **silent ではなく warning を出して無視** される:
|
|
281
|
+
- 絶対パス(先頭 `/`、`~`、Windows ドライブレター `C:`)
|
|
282
|
+
- `..` または `.` を含むパス
|
|
283
|
+
- `.claude/` プレフィックス(`.claude/agents/x.md` は不可、`agents/x.md` と書く)
|
|
284
|
+
- シンボリックリンク経由のパス
|
|
285
|
+
- ディレクトリ(ファイルのみサポート)
|
|
286
|
+
- `\` (バックスラッシュ)を含むパス
|
|
287
|
+
|
|
288
|
+
**対処**:
|
|
289
|
+
- 削除候補に書くパスは「.claude/ からの相対 POSIX パス」のみ(例: `agents/foo.md`)
|
|
290
|
+
- ディレクトリを丸ごと削除したい場合は、配下のファイルを 1 つずつ列挙
|
|
291
|
+
- `c3 update --dry-run` で warning が出ていないか確認
|
|
292
|
+
- `deletions.txt` 自身を更新したい場合は通常の `c3 update` の add/update ロジックが処理する
|
|
293
|
+
|
|
294
|
+
### 落とし穴 5: `permission_rules.json` は `settings.json.permissions.deny` を覆せない(要検証)
|
|
295
|
+
|
|
296
|
+
**現状**: `permission_handler.py` の実装を読む限り、`PermissionRequest` hook は
|
|
297
|
+
Claude Code 側で `deny` 判定が出た後に発火するため、`permission_rules.json` の `auto_allow` で
|
|
298
|
+
`deny` を覆すことはできないはず。ただし Claude Code 公式仕様に明記なし。
|
|
299
|
+
|
|
300
|
+
**残課題**: v2.18.0 以降の検証タスクとして記録。現時点では「覆せない前提で設計する」ことを推奨。
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
|
|
304
|
+
## 8. 参照先
|
|
305
|
+
|
|
306
|
+
### 一次資料
|
|
307
|
+
|
|
308
|
+
| 資料 | 場所 | 内容 |
|
|
309
|
+
|---|---|---|
|
|
310
|
+
| 配布元ルール | `/CLAUDE.md` | 3 ファイル同期・wheel 実体検証手順(配布元開発者向け) |
|
|
311
|
+
| 共通ルール | `.claude/CLAUDE.md` | LLM 行動規範・承認フロー |
|
|
312
|
+
| 設定キー仕様 | `.claude/docs/settings.json.md` | settings.json の各キー詳細仕様 |
|
|
313
|
+
| ディレクトリ命名 | `.claude/docs/taxonomy.md` | ディレクトリの命名・役割・配置判断 |
|
|
314
|
+
| プラットフォーム別 | `.claude/docs/platform-adapters.md` | Codex / Cursor adapter の生成物と参照経路 |
|
|
315
|
+
| 背景・設計判断 | `.claude/docs/C3のconfig_policyとversion_upgradeの考慮点と超えるべき壁.md` | 本ドキュメント作成の背景・version upgrade の残課題 |
|
|
316
|
+
|
|
317
|
+
### 実装ファイル
|
|
318
|
+
|
|
319
|
+
| ファイル | 場所 | 内容 |
|
|
320
|
+
|---|---|---|
|
|
321
|
+
| 除外パターン定義 | `src/c3/_excludes.py` | `EXCLUDE_PATTERNS` / `KEEP_PATTERNS` 定数 + `should_skip()` |
|
|
322
|
+
| ビルド時除外 | `hatch_build.py` | `_excludes.py` の重複定義(ビルドフック用) |
|
|
323
|
+
| 同期確認 hook | `.dev/hooks/_sync_check.py` | 3 ファイル変更時の警告(配布元専用) |
|
|
324
|
+
| 自動承認 hook | `.claude/hooks/permission_handler.py` | `permission_rules.json` を読んで自動承認 |
|
|
325
|
+
|
|
326
|
+
### 残課題リンク(v2.18.0 以降)
|
|
327
|
+
|
|
328
|
+
- `permission_rules.json` の `auto_allow` が `settings.json.permissions.deny` を覆せるか検証
|
|
329
|
+
- `~/.claude/settings.json` のグローバル設定と `.claude/settings.json` の同キー競合時のマージ範囲確認
|
|
330
|
+
- ~~`c3 update` の削除検出(`deletions.txt` 方式、v2.18.0 予定)~~ → v2.18.0 で実装
|
|
331
|
+
- `c3 update` 時の Breaking changes 警告(v2.19.0 予定)
|
|
@@ -1,5 +1,125 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v2.18.0 (2026-05-24)
|
|
4
|
+
|
|
5
|
+
**基盤整備リリース第 2 弾**: `c3 update` の削除検出を `deletions.txt` 方式で導入する。
|
|
6
|
+
v2.0.0 以来の `c3_update_no_delete_detection` defect(リリースで廃止した
|
|
7
|
+
skill / hook / agent が利用先に残り続ける問題)を構造的に解消する。
|
|
8
|
+
|
|
9
|
+
### 追加
|
|
10
|
+
|
|
11
|
+
- **`.claude/deletions.txt`**(新規): 利用先で削除すべきファイルパス一覧。
|
|
12
|
+
1 行 1 パス、`#` でコメント、`.claude/` 相対 POSIX パス。v2.1.0 / v2.11.0 /
|
|
13
|
+
v2.12.0 / v2.15.1 までの過去廃止 16 ファイルを初期エントリとして同梱。
|
|
14
|
+
- **`c3 update` の自動削除機能**: `_template/.claude/deletions.txt` を読み、
|
|
15
|
+
利用先の該当ファイルを削除候補として扱う。`--dry-run` で予告のみ、通常実行は
|
|
16
|
+
確認プロンプト `y/N`、`--yes` / `-y` フラグでプロンプトスキップ可。
|
|
17
|
+
- **`--yes` / `-y` フラグ**(新規): 削除確認プロンプトをスキップする。
|
|
18
|
+
**CI / 自動化ワークフロー専用**。対話環境での常用は推奨しない。
|
|
19
|
+
`--dry-run` と同時指定しても効果なし。
|
|
20
|
+
- **13 段セーフガード**: 削除対象パスに対する 13 種類の事前検査
|
|
21
|
+
- 文字列レベル: 空パス / 絶対パス / `~` / バックスラッシュ / Windows ドライブレター /
|
|
22
|
+
`.claude/` プレフィックス禁止 / ANSI エスケープシーケンス検出(ECMA-48 §5.4 全網羅)
|
|
23
|
+
- 構造レベル: `..` `.` 含み / null byte / `Path.is_symlink()` でシンボリックリンク拒否 /
|
|
24
|
+
`Path.resolve()` で `.claude/` 配下確認 / `Path.is_dir()` でディレクトリ拒否 /
|
|
25
|
+
`deletions.txt` 自身の自己削除拒否(Windows NTFS case-insensitive 対応)
|
|
26
|
+
- **新規テスト 35 件**: `tests/test_cli_update_deletions.py` に A: ユニット 14 件 /
|
|
27
|
+
B: 結合 8 件 / C: 攻撃 10 件 / D: CLI 4 件 = 計 36 件(既存 DEPRECATED_PATHS
|
|
28
|
+
テスト 3 件削除 → 純増 32 件)
|
|
29
|
+
|
|
30
|
+
### 撤去
|
|
31
|
+
|
|
32
|
+
- **`cli_update.py` の `DEPRECATED_PATHS` 定数 + `_warn_deprecated_paths()`
|
|
33
|
+
関数**: v2.15.1 で導入した「stderr 警告のみ・削除しない」方式を完全撤去し、
|
|
34
|
+
`deletions.txt` 方式に一元化。
|
|
35
|
+
|
|
36
|
+
### ドキュメント
|
|
37
|
+
|
|
38
|
+
- **`.claude/docs/config-policy.md`**:
|
|
39
|
+
- §3 配布判断マトリクス 12 → 13 カテゴリ(`deletions.txt` 追加)
|
|
40
|
+
- §7「既知の落とし穴」5 項目目「`deletions.txt` 自身は削除されない・
|
|
41
|
+
絶対パスは無視される」追加
|
|
42
|
+
- §8 残課題から「v2.18.0 予定」を完了化
|
|
43
|
+
|
|
44
|
+
### セキュリティ
|
|
45
|
+
|
|
46
|
+
- パストラバーサル / 絶対パス / Home (`~`) / Windows ドライブレター /
|
|
47
|
+
バックスラッシュ / `.claude/` プレフィックス / 親遡り / シンボリックリンク経由 /
|
|
48
|
+
ディレクトリ削除 / Windows case-insensitive バイパス / ANSI CSI シーケンス /
|
|
49
|
+
null byte / `deletions.txt` 自身 — 計 12 種の攻撃面を構造的に防御
|
|
50
|
+
- Round 1 + Round 2 + Round 3 で計 17 件のレビュー指摘(CR 10 + SR 7)全件対応
|
|
51
|
+
|
|
52
|
+
### 次リリース予告
|
|
53
|
+
|
|
54
|
+
- **v2.19.0**(予定): Breaking changes 警告 + バージョン checkpoint。
|
|
55
|
+
`c3 update` 実行時に前回バージョンとの diff から breaking changes 一覧を表示する。
|
|
56
|
+
|
|
57
|
+
### 影響
|
|
58
|
+
|
|
59
|
+
- **既存利用先**: `c3 update` 実行時に過去廃止 16 ファイルの削除候補が表示される。
|
|
60
|
+
デフォルトは確認プロンプト(`N`)のため、誤削除事故は発生しない。
|
|
61
|
+
- **CI / 自動化環境**: `--yes` フラグを明示しない限り従来通り(プロンプトで止まる)。
|
|
62
|
+
- **既存テスト**: 944 → 979 PASS(純増 35 件)、API 互換性完全維持。
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## v2.17.0 (2026-05-24)
|
|
67
|
+
|
|
68
|
+
**基盤整備リリース第 1 弾**: 設定階層と配布判断ルールを canonical 化する。
|
|
69
|
+
コード変更は最小(docstring 追記のみ)、API 互換性完全維持、利用先への影響なし。
|
|
70
|
+
|
|
71
|
+
### 追加
|
|
72
|
+
|
|
73
|
+
- **`.claude/docs/config-policy.md` を新規作成(308 行)**: 設定階層と配布判断ルールを
|
|
74
|
+
canonical 化する。主要構成は以下:
|
|
75
|
+
- §1 設定ファイル所在マップ(配布元と利用先での所在を一覧化)
|
|
76
|
+
- §2 設定優先順位(3 レイヤー: ツール権限 / 自動承認パターン / LLM 指示)と書き込み権限マトリクス
|
|
77
|
+
- §3 配布判断マトリクス(12 カテゴリ、`_excludes.py` の `EXCLUDE_PATTERNS` / `KEEP_PATTERNS`
|
|
78
|
+
と完全照合済み)
|
|
79
|
+
- §4 `settings.local.json` 運用の原則(`git add -f` リスク警告 / `c3 init` は `.gitignore`
|
|
80
|
+
を自動編集しないため手動追記が必要な点を明記)
|
|
81
|
+
- §5 プラットフォーム別 config 整合(canonical は `.claude/`、`.codex/` / `.cursor/` /
|
|
82
|
+
`.agents/` は adapter 生成物)
|
|
83
|
+
- §6 3 ファイル同期ルール(`.gitignore` / `_excludes.py` / `hatch_build.py`)
|
|
84
|
+
- §7 既知の落とし穴(`hooks` セクションの完全上書き / `taxonomy.md` の特殊扱い /
|
|
85
|
+
`rules/promoted/` を `c3 update` が触らない / `permission_rules.json` の `auto_allow`
|
|
86
|
+
過度設定リスク)
|
|
87
|
+
- §8 参照先
|
|
88
|
+
- **`src/c3/_excludes.py` / `hatch_build.py` の docstring**:
|
|
89
|
+
両ファイル冒頭の docstring 末尾に「See `.claude/docs/config-policy.md`」参照を
|
|
90
|
+
完全一致 1 文で追記(3 ファイル同期の精神に則る)。定数 `EXCLUDE_PATTERNS` /
|
|
91
|
+
`KEEP_PATTERNS` は変更なし。
|
|
92
|
+
- **`.claude/CLAUDE.md`**: Directory Structure セクション末尾に config-policy.md
|
|
93
|
+
への参照を 1 行追加。
|
|
94
|
+
|
|
95
|
+
### 背景・経緯
|
|
96
|
+
|
|
97
|
+
`.claude/docs/C3のconfig_policyとversion_upgradeの考慮点と超えるべき壁.md`(2026-05-22
|
|
98
|
+
作成、配布元専用)で整理された「基盤整備 3 連発」のうち、規模「小 × 2」の高優先項目
|
|
99
|
+
を 1 リリースで完結させた。アーキテクト段階の実装照合で以下 3 点を初期素案から
|
|
100
|
+
訂正:
|
|
101
|
+
- 配布判断マトリクス 10 → 12 カテゴリ(`permission_rules.json` 独立追加、例外 3 件明示)
|
|
102
|
+
- 章数 7 → 8(§7「既知の落とし穴」追加)
|
|
103
|
+
- 「5 段優先順位」→「3 レイヤー」(実装と乖離していたため修正)
|
|
104
|
+
|
|
105
|
+
### 次リリース予告
|
|
106
|
+
|
|
107
|
+
- **v2.18.0** (予定): `c3 update` が削除を検出しない問題(`c3_update_no_delete_detection`
|
|
108
|
+
パターン)の解消。`deletions.txt` 方式で配布物に削除すべきパス一覧を含める。
|
|
109
|
+
- **v2.19.0** (予定): Breaking changes 警告 + バージョン checkpoint。`c3 update`
|
|
110
|
+
実行時に前回バージョンとの diff から breaking changes 一覧を表示する。
|
|
111
|
+
|
|
112
|
+
### 影響
|
|
113
|
+
|
|
114
|
+
- 既存利用先: なし。doc 追加 + docstring 追記のみで、コード挙動・CLI 挙動・wheel
|
|
115
|
+
配布物の構造(`_template/.claude/docs/` 配下に `config-policy.md` 追加のみ)に
|
|
116
|
+
破壊的変更はない。
|
|
117
|
+
- 既存テスト: 944 PASS / 4 skip 維持。
|
|
118
|
+
- レビュー対応: Round 1 code-review 4 件(M-01 / M-02 / L-01 / L-02)+ Round 2
|
|
119
|
+
security-review 3 件(SR-M-01 / SR-L-01 / SR-L-02)を計 3 ラウンドで全件解消。
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
3
123
|
## v2.16.0 (2026-05-24)
|
|
4
124
|
|
|
5
125
|
### 修正
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-conductor
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.18.0
|
|
4
4
|
Summary: Multi-agent orchestration framework for Claude Code with Codex/Cursor adapters (C3)
|
|
5
5
|
Project-URL: Homepage, https://github.com/satoh-y-0323/claude-code-conductor
|
|
6
6
|
Project-URL: Repository, https://github.com/satoh-y-0323/claude-code-conductor
|
|
@@ -6,6 +6,9 @@ than rely on ``[tool.hatch.build] exclude`` patterns - which do not propagate
|
|
|
6
6
|
into ``force-include`` sources - we copy the wanted subset into a staging
|
|
7
7
|
location during ``initialize()`` and the wheel target packages that staged tree
|
|
8
8
|
verbatim.
|
|
9
|
+
|
|
10
|
+
See ``.claude/docs/config-policy.md`` for the distribution decision matrix
|
|
11
|
+
and the rationale behind each excluded pattern.
|
|
9
12
|
"""
|
|
10
13
|
|
|
11
14
|
from __future__ import annotations
|
|
@@ -65,6 +68,7 @@ KEEP_PATTERNS: tuple[str, ...] = (
|
|
|
65
68
|
"memory/archive/.gitkeep",
|
|
66
69
|
"tmp/.gitkeep",
|
|
67
70
|
"state/.gitkeep",
|
|
71
|
+
"deletions.txt", # 新規: c3 update が読む削除指示書
|
|
68
72
|
)
|
|
69
73
|
|
|
70
74
|
|
|
@@ -11,6 +11,9 @@ Used by:
|
|
|
11
11
|
Patterns are POSIX-style and relative to the ``.claude/`` directory itself
|
|
12
12
|
(e.g. ``"reports/*"``, not ``".claude/reports/*"``). ``KEEP_PATTERNS`` win
|
|
13
13
|
over ``EXCLUDE_PATTERNS`` so that placeholder ``.gitkeep`` files survive.
|
|
14
|
+
|
|
15
|
+
See ``.claude/docs/config-policy.md`` for the distribution decision matrix
|
|
16
|
+
and the rationale behind each excluded pattern.
|
|
14
17
|
"""
|
|
15
18
|
|
|
16
19
|
from __future__ import annotations
|
|
@@ -62,6 +65,7 @@ KEEP_PATTERNS: tuple[str, ...] = (
|
|
|
62
65
|
"memory/archive/.gitkeep",
|
|
63
66
|
"tmp/.gitkeep",
|
|
64
67
|
"state/.gitkeep",
|
|
68
|
+
"deletions.txt", # 新規: c3 update が読む削除指示書
|
|
65
69
|
)
|
|
66
70
|
|
|
67
71
|
|