claude-code-conductor 2.29.2__tar.gz → 2.29.3__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.29.2 → claude_code_conductor-2.29.3}/.claude/deletions.txt +37 -0
- claude_code_conductor-2.29.3/ARCHITECTURE.md +257 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/CHANGELOG.md +14 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/PKG-INFO +1 -1
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/pyproject.toml +1 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/__init__.py +1 -1
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/CLAUDE.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/developer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/systematic-debugger.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/tester.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/wt_developer.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/wt_systematic-debugger.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/wt_tester.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/breaking-changes.txt +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/config-policy.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/parallel-agents-setup.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/settings.json.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/_hook_utils.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/check_agent_invocation.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/permission_handler.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/permission_handler_toast.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/planner_check.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/recall_inject.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/select_tier.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/session_stop.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/permission_rules.json +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/settings.json +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/brainstorm/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/codex-review/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/scripts/record_tier_outcome.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/extract-lib/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/parallel-agents/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/pattern-status/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/recall/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/review-phase/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/setup/reference.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/start/SKILL.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.gitignore +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/chroma-hnswlib-LICENSE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/chroma-hnswlib-NOTICE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/fastembed-LICENSE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/fastembed-NOTICE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/onnxruntime-LICENSE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/README.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/hatch_build.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/_db_params.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/_excludes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_recall.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_tier.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/cli_update.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/db.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/embedding.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrate.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/001_initial.sql +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/002_agent_cost_runs.sql +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/003_tier_cost.sql +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/README.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/__init__.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/pricing.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/question.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/recall_chunker.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/recall_index.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/usage_ingester.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/__init__.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/conftest.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/README.md +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/mainline.jsonl +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/subagents/agent-deadbeef.jsonl +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/subagents/agent-deadbeef.meta.json +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_check_agent_invocation.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_hook_utils.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_permission_handler.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_permission_handler_toast.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_planner_check_dev.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_recall_inject.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_record_review_decision.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_record_tier_outcome.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_select_tier.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_select_tier_escalation.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_start.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_stop.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/_skill_helpers.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_init_session_no_task_type.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_planner_lightweight.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_recall_skill.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_setup_templates.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_start_skill_new_flow.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_check_deletions.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_entry.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_init.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_recall.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_tier.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_update_breaking_changes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_update_deletions.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_db.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_embedding.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_extract_breaking_changes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_mcp_server_elicit.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_migrate.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_pricing.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_recall_chunker.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_recall_index.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_references_migration.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_skill_no_builtin_conflict.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_template_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_usage_ingester.py +0 -0
- {claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_worktree_guard.py +0 -0
|
@@ -47,3 +47,40 @@ hooks/schema.sql
|
|
|
47
47
|
rules/code-review-checklist.md
|
|
48
48
|
rules/plan-design-guidelines.md
|
|
49
49
|
rules/security-review-checklist.md
|
|
50
|
+
|
|
51
|
+
# ---- (遡及記載 v2.18.0 前): v0.2.0〜v0.3.4 commands/ → skills/ 移行 (082c8a6) ----
|
|
52
|
+
# (v0.2.0〜v0.3.4 公開済み wheel に含まれていた。利用先で `c3 update` 時に除去される)
|
|
53
|
+
commands/develop.md
|
|
54
|
+
commands/review.md
|
|
55
|
+
commands/doc.md
|
|
56
|
+
commands/extract-lib.md
|
|
57
|
+
commands/init-session.md
|
|
58
|
+
commands/mcp.md
|
|
59
|
+
commands/promote-pattern.md
|
|
60
|
+
commands/setup.md
|
|
61
|
+
commands/start.md
|
|
62
|
+
|
|
63
|
+
# ---- (遡及記載 v2.18.0 前): v0.2.0〜v0.3.4 旧 skills/*.md フラットレイアウト廃止 (082c8a6) ----
|
|
64
|
+
# (v0.2.0〜v0.3.4 公開済み。skills/<name>/SKILL.md 形式へ移行)
|
|
65
|
+
skills/dev-workflow.md
|
|
66
|
+
skills/wave-execution.md
|
|
67
|
+
skills/worktree-tdd-workflow.md
|
|
68
|
+
skills/promoted/index.md
|
|
69
|
+
|
|
70
|
+
# ---- (遡及記載 v2.18.0 前): v0.2.0〜v0.2.4 parallel-execution skill 廃止 (6edf2ef) ----
|
|
71
|
+
skills/parallel-execution.md
|
|
72
|
+
|
|
73
|
+
# ---- (遡及記載 v2.18.0 前): v0.2.0〜v1.9.0 初期 hooks 統廃合 → session_start.py 集約 (04124c2) ----
|
|
74
|
+
# (v1.10.0 で session_start.py に統合された旧 hook 4 ファイル)
|
|
75
|
+
hooks/clear_file_history.py
|
|
76
|
+
hooks/enable_sandbox.py
|
|
77
|
+
hooks/init_c3_db.py
|
|
78
|
+
hooks/validate_skill_change.py
|
|
79
|
+
|
|
80
|
+
# ---- (遡及記載 v2.18.0 前): v1.0.0〜v1.14.0 PO (Parallel Orchestra) 廃止 (60b4f3d / eda2e94 / 47efe1c) ----
|
|
81
|
+
# (v2.0.0 BREAKING で PO 廃止。利用先に残る関連ファイルを除去)
|
|
82
|
+
skills/po-status/SKILL.md
|
|
83
|
+
skills/wave-execution/SKILL.md
|
|
84
|
+
docs/parallel-orchestra-manifest.md
|
|
85
|
+
docs/po-worktree-writes.md
|
|
86
|
+
hooks/po_heartbeat.py
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
# C3 アーキテクチャ
|
|
2
|
+
|
|
3
|
+
Claude Code Conductor(C3)が **何でできていて・実行時にどう動き・どうビルドされ配布されるか** を 1 枚で示す全体地図。
|
|
4
|
+
|
|
5
|
+
> **このドキュメントの立ち位置**: ここは「地図」であり、各領域の詳細は専門ドキュメントに委譲する(重複を作らない)。
|
|
6
|
+
> 詳細の所在は [§8 正典ドキュメントの地図](#8-正典ドキュメントの地図) を参照。
|
|
7
|
+
>
|
|
8
|
+
> **対象読者**: C3 本体をフォーク・拡張する開発者、コントリビューター、未来の自分。
|
|
9
|
+
> C3 の *利用先* ユーザーには本ファイルは不要(`c3 init` では配布されない。[§5](#5-ビルド配布パイプライン) 参照)。
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. C3 の二層構造
|
|
14
|
+
|
|
15
|
+
C3 は性質の異なる **2 つの層** からなる。この区別が全体理解の起点になる。
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
19
|
+
│ 層 A: c3 Python パッケージ(PyPI: claude-code-conductor) │
|
|
20
|
+
│ ターミナルで動く CLI / インストーラ / 知能基盤 │
|
|
21
|
+
│ 実体: src/c3/*.py │
|
|
22
|
+
│ 役割: .claude/ を利用先へ配置・更新し、recall/tier 等の │
|
|
23
|
+
│ 「Claude Code の外で走る計算」を担う │
|
|
24
|
+
└─────────────────────────────────────────────────────────────┘
|
|
25
|
+
│ c3 init / c3 update で配置
|
|
26
|
+
▼
|
|
27
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
28
|
+
│ 層 B: .claude/ フレームワーク本体 │
|
|
29
|
+
│ Claude Code の *内側* で動くオーケストレーション定義 │
|
|
30
|
+
│ 実体: .claude/{agents,skills,rules,hooks,memory,...} │
|
|
31
|
+
│ 役割: 親 Claude が専門エージェントを指揮する仕組み │
|
|
32
|
+
└─────────────────────────────────────────────────────────────┘
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
| | 層 A(`c3` パッケージ) | 層 B(`.claude/` フレームワーク) |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| 実行環境 | ターミナル(Python プロセス) | Claude Code セッション内 |
|
|
38
|
+
| 言語 | Python | Markdown(+ hook は Python) |
|
|
39
|
+
| 配布 | `pip install claude-code-conductor` | `c3 init` が層 A から展開 |
|
|
40
|
+
| エントリ | `c3 = "c3.cli:main"`(pyproject.toml) | スラッシュコマンド・Agent ツール |
|
|
41
|
+
| 依存 | PyYAML / duckdb / chroma-hnswlib / fastembed | Claude Code ランタイム |
|
|
42
|
+
|
|
43
|
+
**配布元リポジトリ内の物理対応**:
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
claude-code-conductor/
|
|
47
|
+
├── src/c3/ ← 層 A の実体(Python パッケージ)
|
|
48
|
+
│ └── _template/.claude/ ← 層 B の「配布スナップショット」(ビルド時自動生成・直接編集禁止)
|
|
49
|
+
├── .claude/ ← 層 B の canonical source(開発時はここを編集する)
|
|
50
|
+
├── hatch_build.py ← .claude/ → _template/ への staging(§5)
|
|
51
|
+
└── pyproject.toml ← 層 A のパッケージ定義
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
> 層 B を変更したいときは **`.claude/` を編集する**。`src/c3/_template/` はビルド時に再生成される配布物実体なので直接編集しても消える(`.dev/hooks/_template_guard.py` がブロックする)。
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 2. ランタイム・オーケストレーションモデル
|
|
59
|
+
|
|
60
|
+
C3 の中心思想は「**親 Claude(オーケストレーター)が複数の専門エージェントを指揮する**」。
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
ユーザー
|
|
64
|
+
│ /start /develop /review-phase /doc ...(= skills)
|
|
65
|
+
▼
|
|
66
|
+
親 Claude(オーケストレーター)
|
|
67
|
+
├─ ペルソナ採用で動く(対話が必要): interviewer / architect / planner
|
|
68
|
+
└─ Agent ツールで起動する(実装・検証): developer / tester /
|
|
69
|
+
code-reviewer / security-reviewer / doc-writer / systematic-debugger
|
|
70
|
+
│
|
|
71
|
+
├─ 受け渡し: reports/*.md(requirements / architecture / plan / *-review / test)
|
|
72
|
+
├─ 記憶: memory/(sessions/*.tmp・patterns.json)/ agent-memory/
|
|
73
|
+
└─ 制約・知識: rules/(常時注入)・CLAUDE.md(行動規範)
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### 構成要素と責務
|
|
77
|
+
|
|
78
|
+
| 要素 | 置き場所 | 役割 | 詳細 |
|
|
79
|
+
|---|---|---|---|
|
|
80
|
+
| **agents** | `.claude/agents/*.md` | 「誰か」(ペルソナ・スコープ・出力契約)のみ定義 | [taxonomy.md](.claude/docs/taxonomy.md) |
|
|
81
|
+
| **skills** | `.claude/skills/<name>/SKILL.md` | 「何をするか」(手順・フェーズ構成)。スラッシュコマンドの実体 | taxonomy.md |
|
|
82
|
+
| **rules** | `.claude/rules/*.md` | 「これを知っておけ」(知識・制約)。全文常時注入 | taxonomy.md |
|
|
83
|
+
| **hooks** | `.claude/hooks/*.py` | ライフサイクルイベントで自動実行 | [§3](#3-hook-ライフサイクル) |
|
|
84
|
+
| **memory** | `.claude/memory/` | セッション間の記憶。hook が骨格、LLM が中身を更新 | taxonomy.md |
|
|
85
|
+
| **reports** | `.claude/reports/` | エージェント間の受け渡し成果物 | — |
|
|
86
|
+
|
|
87
|
+
### 起動方式の使い分け
|
|
88
|
+
|
|
89
|
+
- **親 Claude がペルソナ採用**(interviewer / architect / planner): ユーザーとの対話が必要なため、サブエージェント化せず親が役を演じる。対話 skill は frontmatter に `allowed-tools` を**付けない**(絞ると `AskUserQuestion` が落ちる)。
|
|
90
|
+
- **Agent ツールで起動**(developer / tester / reviewer 系 / doc-writer / systematic-debugger): 独立スコープで動かしコンテキスト汚染を防ぐ。
|
|
91
|
+
- **`wt_*` 派生**(`wt_developer` / `wt_tester` / `wt_systematic-debugger`): `parallel-agents` skill が `isolation: "worktree"` で並列起動する専用版。`permissionMode: bypassPermissions` とレポートの task_id 命名だけが通常版と異なる。
|
|
92
|
+
|
|
93
|
+
### 開発ワークフロー(dev-workflow skill)
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
A ヒアリング → B 設計 → C 計画 → D 実装(TDD) → E レビュー
|
|
97
|
+
(requirements)(architecture)(plan)(tester⇄developer)(code/security-reviewer)
|
|
98
|
+
各フェーズ間でユーザー承認。E で指摘が出たら C へ戻る(内部遷移)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`/start`(入口)→ `develop`(D 以降のガード/legacy 逐次 TDD と `parallel-agents` を分岐)→ `parallel-agents`(plan-report の YAML フロントマターを wave 分解し並列起動)という連携で動く。
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 3. hook ライフサイクル
|
|
106
|
+
|
|
107
|
+
層 B の自動化は Claude Code のライフサイクル hook で実現する。**以下は `.claude/settings.json` に登録された実際のマッピング**(配布される hook)。
|
|
108
|
+
|
|
109
|
+
| イベント | matcher | hook | 役割 |
|
|
110
|
+
|---|---|---|---|
|
|
111
|
+
| `SessionStart` | `compact` | `restore_session.py` | compact 後のセッション復元 |
|
|
112
|
+
| `SessionStart` | (全て) | `session_start.py` | file-history クリア・sandbox 有効化・`c3.db` 初期化 |
|
|
113
|
+
| `UserPromptSubmit` | (全て) | `select_tier.py` | 複雑度判定 → Tier ルーティング推奨([§4](#4-知能基盤)) |
|
|
114
|
+
| `UserPromptSubmit` | (全て) | `recall_inject.py` | 過去類似情報を意味検索しコンテキスト注入([§4](#4-知能基盤)) |
|
|
115
|
+
| `PreToolUse` | `Bash` | `pre_tool.py` | 破壊的コマンド(`rm -rf` 等)ブロック・secret スキャン |
|
|
116
|
+
| `PreToolUse` | `Write` / `Edit` | `worktree_guard.py` | worktree 外への書き込み禁止(`PO_WORKTREE_GUARD=1` 設定時のみ作動。parallel-agents が並列実行時に有効化) |
|
|
117
|
+
| `PreToolUse` | `Agent` | `check_agent_invocation.py` | エージェント起動の検査 |
|
|
118
|
+
| `PostToolUse` | `Write` / `Edit` | `post_tool.py` | skills 変更通知・品質パターン(TODO 等)スキャン |
|
|
119
|
+
| `PostToolUse` | `Write` / `Edit` | `planner_check.py` | plan-report の YAML/タイムスタンプ/reviewer 規約検査 |
|
|
120
|
+
| `PermissionRequest` | (全て) | `permission_handler.py` | `permission_rules.json` の `auto_allow` で自動承認([config-policy §2 レイヤー B](.claude/docs/config-policy.md)) |
|
|
121
|
+
| `PreCompact` | (全て) | `pre_compact.py` | compact 前にチェックポイントマーカー注入 |
|
|
122
|
+
| `Stop` | (全て) | `session_stop.py` | セッション終了処理のオーケストレータ |
|
|
123
|
+
|
|
124
|
+
### hook ワーカー(イベント登録なし・内部呼び出し)
|
|
125
|
+
|
|
126
|
+
`session_stop.py` は 3 段で他モジュールを呼ぶ:
|
|
127
|
+
|
|
128
|
+
- Phase 1 `stop.py` — session ファイル生成・最終応答記録・パターン信用度再計算
|
|
129
|
+
- Phase 2 `consolidate_memory.py` — セッション要約・昇格候補ログ・アーカイブ
|
|
130
|
+
- Phase 3 `usage_ingester.py` + `db.sync_tier_bandit_cost()` — セッションログからコスト集計(worktree セッションでは起動しない。§4-1 参照)
|
|
131
|
+
- 共通: `session_utils.py` / `_hook_utils.py`(複数 hook が共有するヘルパー)
|
|
132
|
+
|
|
133
|
+
### 設計原則
|
|
134
|
+
|
|
135
|
+
- **非ブロッキング**: 観測系 hook は失敗しても `exit 0` でセッションを止めない(DB 不在・index 不在でも本体は動く)。
|
|
136
|
+
- **`exit 2` は自己修正用**: PostToolUse の `exit 2` は LLM の system reminder に block error として surface される(「自動修正させたい違反」は exit 2、「ログだけ」は exit 0 + stderr で書き分ける)。例は配布元専用 `.dev/hooks/_planner_check.py` の R3。なお PreToolUse の `exit 2`(`check_agent_invocation.py` の R5 等)は動作をブロックするが LLM コンテキストへは注入されず、設計が異なる。
|
|
137
|
+
- **配布元専用 hook** は `.dev/hooks/` に分離(`settings.local.json` で登録・配布されない): `_template_guard.py` / `_sync_check.py` / `_pip_reinstall_reminder.py` / `_planner_check.py`。
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 4. 知能基盤(層 A が担う計算)
|
|
142
|
+
|
|
143
|
+
「Claude Code の外で走らせた方がよい計算」を層 A が担う。2 つの独立サブシステムがある。
|
|
144
|
+
|
|
145
|
+
### 4-1. `c3.db`(SQLite + DuckDB ハイブリッド)
|
|
146
|
+
|
|
147
|
+
書き込みは標準 `sqlite3`(WAL モード)、読み・分析は DuckDB の `sqlite_scanner` で ATTACH する想定。スキーマは `src/c3/migrations/*.sql` を `migrate.py` が冪等適用する。
|
|
148
|
+
|
|
149
|
+
| テーブル | 用途 | 書き込み元 |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| `schema_migrations` | マイグレーション適用記録 | `migrate.py` |
|
|
152
|
+
| `review_decisions` | レビュー指摘への過去判断(対応/許容) | `record_review_decision.py`(dev-workflow/scripts) |
|
|
153
|
+
| `tier_bandit` | Tier ルーティングの Thompson Sampling 統計 | `select_tier.py` / `record_tier_outcome.py` |
|
|
154
|
+
| `tier_recent_outcomes` | 直近 outcome 履歴(escalation 判定用) | 同上 |
|
|
155
|
+
| `agent_runs` / `agent_cost_runs` | エージェント実行・コスト集計 | `usage_ingester.py` |
|
|
156
|
+
| `usage_ingest_state` | セッションログ取り込みの offset 管理 | `usage_ingester.py` |
|
|
157
|
+
|
|
158
|
+
- **review-hint ループ**: code-reviewer が `[CR-XX-NNN]` ID を付与 → `review_hint_inject.py` が過去判断を次回レビューに注入し、一貫性を高める。
|
|
159
|
+
- **tier-routing**: `select_tier.py`(`UserPromptSubmit` hook)がプロンプト複雑度を判定し Tier(haiku/sonnet/opus)を推奨。`LEARNING_THRESHOLD`(=30)試行までは uniform、以降は cost-weighted Thompson Sampling。環境変数 `C3_TIER_COST_LAMBDA` / `C3_TIER_EPSILON` / `C3_ESCALATION_THRESHOLD` で調整(解決は `db.py` の `resolve_*` → 内部ヘルパー `_resolve_float_env` が SSOT)。CLI は `c3 tier stats`。
|
|
160
|
+
- **cost tracking**: `usage_ingester.py` が `<session>.jsonl`(mainline)と `<session>/subagents/agent-*.jsonl`(subagent)を読み、`pricing.py` の単価表で USD 集計する。
|
|
161
|
+
|
|
162
|
+
### 4-2. `recall`(意味検索)
|
|
163
|
+
|
|
164
|
+
過去のセッション・レポート・パターンを意味検索して現タスクに「記憶補完」する。
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
recall_chunker.py → embedding.py → recall_index.py
|
|
168
|
+
(sessions/reports/ (fastembed: paraphrase- (HNSW: chroma-hnswlib・
|
|
169
|
+
patterns をチャンク化) multilingual-MiniLM-L12-v2 .claude/state/ に保存)
|
|
170
|
+
384次元・約220MB・多言語)
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
- CLI: `c3 recall search "<query>"` / `c3 recall rebuild` / `c3 recall stats`。
|
|
174
|
+
- 自動注入: `recall_inject.py`(`UserPromptSubmit` hook)が score 0.4 以上の上位 3 件を裏で注入(α 案・最終採否は LLM 判断)。index が古い(ソース mtime > index mtime)と検出したら rebuild 確認を促す。
|
|
175
|
+
- `C3_RECALL_HOOK_DISABLE=1` で停止可。初回 rebuild はモデル取得のため `FASTEMBED_CACHE_PATH` でミラー指定可。
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## 5. ビルド・配布パイプライン
|
|
180
|
+
|
|
181
|
+
層 B(`.claude/`)を層 A(wheel)に焼き込み、利用先へ届けるまで。
|
|
182
|
+
|
|
183
|
+
### ビルド時の staging
|
|
184
|
+
|
|
185
|
+
`hatch_build.py` の `StageTemplateHook.initialize()` が、wheel/sdist ビルドの最初に `.claude/` を `src/c3/_template/.claude/` へ **フィルタコピー**する。pyproject の `force-include` がこの staging ツリーを wheel に同梱する。
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
.claude/ ──(_should_skip でフィルタ)──▶ src/c3/_template/.claude/ ──▶ wheel
|
|
189
|
+
EXCLUDE_PATTERNS で除外
|
|
190
|
+
KEEP_PATTERNS が優先で救済(.gitkeep / deletions.txt / breaking-changes.txt)
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### 3 ファイル同期ルール(最重要の保守制約)
|
|
194
|
+
|
|
195
|
+
配布除外パターンは **3 ファイルに重複定義**されており、変更時は必ず同期する:
|
|
196
|
+
|
|
197
|
+
| ファイル | 役割 |
|
|
198
|
+
|---|---|
|
|
199
|
+
| `.gitignore` | git 追跡からの除外 |
|
|
200
|
+
| `src/c3/_excludes.py` | `c3 init` / `c3 update` の除外判断(`should_skip`) |
|
|
201
|
+
| `hatch_build.py` | wheel ビルド時の除外判断(`_excludes.py` の重複) |
|
|
202
|
+
|
|
203
|
+
> `hatch_build.py` が重複を持つのは、build hook が **package import 前**に走り `_excludes.py` を import できないため。`.dev/hooks/_sync_check.py`(PostToolUse)が同期漏れを警告する。過去 defect: v1.1.0 / v2.14.1 で wheel 混入。
|
|
204
|
+
|
|
205
|
+
### 配置と更新
|
|
206
|
+
|
|
207
|
+
- `c3 init` — `_template/.claude/` を利用先へ展開(個人ファイルは `should_skip` で除外)。
|
|
208
|
+
- `c3 update` — 差分更新(`reports/`・`memory/sessions/` 等は保持。`rules/promoted/` は触らない)。
|
|
209
|
+
- `deletions.txt` — `c3 update` が読み、利用先から旧ファイルを削除(`c3 update` は削除を自動検出しないため、リリースで消したファイルはここに明記)。
|
|
210
|
+
- `breaking-changes.txt` — `c3 update` が利用先の `state/c3_version.txt` と diff し破壊的変更を提示。
|
|
211
|
+
|
|
212
|
+
### リリース前チェック(配布元 `/CLAUDE.md` に規定)
|
|
213
|
+
|
|
214
|
+
`python -m build --wheel` で wheel 実体検証 → `scripts/extract_breaking_changes.py --check` → `scripts/check_deletions.py --check`。詳細は配布元 `/CLAUDE.md` と [config-policy.md](.claude/docs/config-policy.md) §5–6。
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 6. クロスプラットフォーム adapter
|
|
219
|
+
|
|
220
|
+
`.claude/` を canonical source としたまま、Codex / Cursor 向けの派生生成物を作る。
|
|
221
|
+
|
|
222
|
+
| プラットフォーム | 生成物 | 生成コマンド |
|
|
223
|
+
|---|---|---|
|
|
224
|
+
| Claude Code | `.claude/`(primary) | — |
|
|
225
|
+
| Codex | `/AGENTS.md` / `.codex/` / `.agents/skills/` | `c3 init --platform codex` |
|
|
226
|
+
| Cursor | `.cursor/rules/c3-core.mdc` / `.cursor/mcp.json` | `c3 init --platform cursor` |
|
|
227
|
+
|
|
228
|
+
- 生成ロジック: `adapters.py` + `platforms.py`。adapter 生成物は **派生物**(直接編集すると再生成で上書き・配布元 `.gitignore` で除外)。
|
|
229
|
+
- `AskUserQuestion` 互換: MCP tool `c3_ask_user_question`(`mcp_server.py`)、非対応時の fallback は `c3 ask`(`cli_ask.py`)。
|
|
230
|
+
- 詳細は `.claude/docs/platform-adapters.md`。
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## 7. テスト・CI
|
|
235
|
+
|
|
236
|
+
- `tests/` に約 73 ファイル・約 1300 テスト関数(unit 中心 + hook 挙動の統合テスト)。`pyproject.toml` の `addopts = "-m 'not slow'"` で重い embedding テストを既定除外。
|
|
237
|
+
- CI(`.github/workflows/`): `test.yml`(Python 3.10/3.11/3.12)、`publish.yml`(PyPI 公開)、Pages(mkdocs ドキュメント)。
|
|
238
|
+
- **テストの穴(既知)**: hook の実ファイル e2e(多くは importlib ロードで実 subprocess 実行と乖離し得る)、worktree 並列実行の競合テストが未整備。
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## 8. 正典ドキュメントの地図
|
|
243
|
+
|
|
244
|
+
C3 のドキュメントは領域ごとに権威が分かれている。**重複させず、各領域の唯一の出典を以下に固定する**。
|
|
245
|
+
|
|
246
|
+
| 領域 | 正典ドキュメント | 扱う内容 |
|
|
247
|
+
|---|---|---|
|
|
248
|
+
| **全体像(本書)** | `/ARCHITECTURE.md` | 二層構造・実行時の動き・ビルド/配布の地図 |
|
|
249
|
+
| フォルダの意味・配置判断 | `.claude/docs/taxonomy.md` | agents/skills/rules/hooks/... の役割と命名 |
|
|
250
|
+
| 配布判断・設定優先順位 | `.claude/docs/config-policy.md` | 配布マトリクス・3 ファイル同期・落とし穴 |
|
|
251
|
+
| LLM 行動規範・承認フロー | `.claude/CLAUDE.md` | エージェントの振る舞いルール |
|
|
252
|
+
| 配布元開発者向け | `/CLAUDE.md`(gitignore・配布されない) | template 編集禁止・wheel 検証・リリース手順 |
|
|
253
|
+
| 設定キー詳細 | `.claude/docs/settings.json.md` | settings.json の各キー仕様 |
|
|
254
|
+
| プラットフォーム adapter | `.claude/docs/platform-adapters.md` | Codex / Cursor 生成物 |
|
|
255
|
+
| 並列実行セットアップ | `.claude/docs/parallel-agents-setup.md` | worktree.baseRef 等の個人設定 |
|
|
256
|
+
|
|
257
|
+
> 迷ったら本書(地図)から各正典へ辿る。新しい設計判断は `.claude/docs/decisions.md`(配布元のみ・D-NNN 採番)に記録する。
|
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.29.3] - 2026-05-28
|
|
4
|
+
|
|
5
|
+
**ドキュメント + 配布調整 PATCH(コード変更・破壊的変更・migration なし)**: sdist への `ARCHITECTURE.md` 同梱と、`deletions.txt` 機構導入(v2.18.0)以前の削除 23 件の遡及追記をまとめてリリース。利用先で次回 `c3 update` 時に古い `.claude/` 残骸が除去される範囲が広がる。コード・公開 API・DB スキーマに変更なし。
|
|
6
|
+
|
|
7
|
+
### ドキュメント
|
|
8
|
+
|
|
9
|
+
- **`ARCHITECTURE.md` を sdist に同梱**: `pyproject.toml` の `[tool.hatch.build.targets.sdist].include` に追記。`pip download` や `pip install --no-binary :all:` で sdist を受け取った利用者もリポジトリルート直下の C3 アーキテクチャ地図を読めるようになる。wheel への同梱は引き続きなし(wheel 利用者は GitHub で参照)。
|
|
10
|
+
- **`.claude/deletions.txt`: v2.18.0 前の削除 23 件を遡及追記**: `deletions.txt` 機構導入(v2.18.0)以前に削除された配布対象ファイルを git 全履歴 × PyPI 公開タグ(v0.2.0〜v2.17.0 の 68 タグ)で全数監査し、漏れ 23 件を追記。v0.2.0〜v1.14.0 を使い続けた利用先で次回 `c3 update` 時に旧 `commands/*.md` 9 件 / 旧 `skills/*.md` 4 件 / `skills/parallel-execution.md` / 初期 hooks 4 件(`session_start.py` 統合前)/ PO (Parallel Orchestra) 関連 5 件が除去される。v2.29.1 で追記した rules→references 3 件と同方針。不在の配布先では no-op(13 段セーフガード)。配布対象外(`reports/*` 等)と未公開ファイル 11 件(どの公開 wheel にも含まれず利用先に届いていない git 履歴上の中間状態)は対象外。
|
|
11
|
+
|
|
12
|
+
### 後方互換
|
|
13
|
+
|
|
14
|
+
- コード・CLI・DB スキーマに変更なし。migration 不要。**破壊的変更なし**。
|
|
15
|
+
- `deletions.txt` の追記は不在の配布先で no-op。配布対象外と判定された旧ファイルは元から削除されない(13 段セーフガード)。
|
|
16
|
+
|
|
3
17
|
## [2.29.2] - 2026-05-28
|
|
4
18
|
|
|
5
19
|
**内部品質リファクタ(振る舞い不変・公開 API 不変・破壊的変更なし)**: v2.29.1 以降に進めたコード負債返済をまとめてリリース。新機能・バグ修正・破壊的変更はなく、`c3.db` などの公開 import は従来どおり動作する。観測可能な変化は「想定内のテーブル未作成(`sqlite3.OperationalError`)のログレベルが warning → debug に下がる」のみ。各リファクタは全テスト緑(1339 passed)・0 regression・全 Python(3.10/3.11/3.12)CI green を確認済み。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-conductor
|
|
3
|
-
Version: 2.29.
|
|
3
|
+
Version: 2.29.3
|
|
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
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/code-reviewer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/project-setup.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/security-reviewer.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/systematic-debugger.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/agents/wt_developer.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/parallel-agents-setup.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/docs/platform-adapters.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/consolidate_memory.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/permission_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/planner_check.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/recall_inject.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/restore_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/session_start.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/session_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/hooks/worktree_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/rules/promoted/index.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/brainstorm/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/codex-review/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/dev-workflow/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/develop/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/extract-lib/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/init-session/SKILL.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/mcp-config/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/pattern-status/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/recall/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/review-phase/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/.claude/skills/setup/reference.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/chroma-hnswlib-LICENSE
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/LICENSES/chroma-hnswlib-NOTICE
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/001_initial.sql
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/src/c3/migrations/003_tier_cost.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/README.md
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/fixtures/usage/mainline.jsonl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_consolidate_memory.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_hook_utils.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_permission_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_planner_check.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_planner_check_dev.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_recall_inject.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_restore_session.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_review_hint_inject.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_select_tier.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_start.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_stop.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_session_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_similarity_boost.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_statusline.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_sync_check.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/hooks/test_template_guard.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/_skill_helpers.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_recall_skill.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/skills/test_setup_templates.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_cli_update_deletions.py
RENAMED
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_docstring_consistency.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_extract_breaking_changes.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_mcp_server_elicit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_precompact_additional.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_precompact_toctou_fixes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_references_migration.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_session_utils_additional.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_stop_precompact_fixes.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_sync_template_stop.py
RENAMED
|
File without changes
|
{claude_code_conductor-2.29.2 → claude_code_conductor-2.29.3}/tests/test_template_pre_tool_hook.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|