claude-code-conductor 2.15.0__tar.gz → 2.15.2__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.15.2/.claude/docs/parallel-agents-setup.md +152 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/codex-review/SKILL.md +2 -2
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/SKILL.md +1 -1
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/extract-lib/SKILL.md +1 -1
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/parallel-agents/SKILL.md +22 -8
- {claude_code_conductor-2.15.0/.claude/skills/code-review → claude_code_conductor-2.15.2/.claude/skills/review-phase}/SKILL.md +1 -1
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.gitignore +1 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/CHANGELOG.md +66 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/PKG-INFO +25 -4
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/README.md +24 -3
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/hatch_build.py +1 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/__init__.py +1 -1
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/_excludes.py +1 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_update.py +33 -0
- claude_code_conductor-2.15.2/tests/test_cli_update.py +41 -0
- claude_code_conductor-2.15.2/tests/test_db.py +166 -0
- claude_code_conductor-2.15.2/tests/test_skill_no_builtin_conflict.py +20 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_worktree_guard.py +35 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/CLAUDE.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/developer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/systematic-debugger.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/tester.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/wt_developer.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/wt_systematic-debugger.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/agents/wt_tester.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/docs/settings.json.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/_hook_utils.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/check_agent_invocation.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/permission_handler.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/permission_handler_toast.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/planner_check.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/recall_inject.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/schema.sql +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/select_tier.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/session_stop.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/permission_rules.json +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/settings.json +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/scripts/record_tier_outcome.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/pattern-status/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/recall/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/setup/reference.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/start/SKILL.md +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/chroma-hnswlib-LICENSE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/chroma-hnswlib-NOTICE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/fastembed-LICENSE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/fastembed-NOTICE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/onnxruntime-LICENSE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/pyproject.toml +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_recall.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/cli_tier.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/db.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/embedding.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/question.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/recall_chunker.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/src/c3/recall_index.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/__init__.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/conftest.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_check_agent_invocation.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_hook_utils.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_permission_handler.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_permission_handler_toast.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_planner_check_dev.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_recall_inject.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_record_review_decision.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_record_tier_outcome.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_select_tier.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_select_tier_escalation.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_session_start.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_session_stop.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/_skill_helpers.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_init_session_no_task_type.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_planner_lightweight.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_recall_skill.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_setup_templates.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_start_skill_new_flow.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_entry.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_init.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_recall.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_cli_tier.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_embedding.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_mcp_server_elicit.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_recall_chunker.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_recall_index.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_references_migration.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/tests/test_template_pre_tool_hook.py +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# parallel-agents 推奨個人設定
|
|
2
|
+
|
|
3
|
+
C3 の `parallel-agents` skill(`/develop` から間接起動)を快適に使うための、
|
|
4
|
+
**Claude Code バージョン要件と個人設定の推奨値**をまとめる。
|
|
5
|
+
|
|
6
|
+
> 本ドキュメントは **C3 利用者(人間)向け** のリファレンス。
|
|
7
|
+
> LLM 向けの skill 動作指針は `.claude/skills/parallel-agents/SKILL.md` を参照。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 概要
|
|
12
|
+
|
|
13
|
+
`parallel-agents` skill は Claude Code 公式の `isolation: "worktree"` 機構を使い、
|
|
14
|
+
`.claude/worktrees/agent-<id>/` 配下に独立した git worktree を作成して並列実行する。
|
|
15
|
+
このとき以下 2 点で **利用者環境への期待** が発生する。
|
|
16
|
+
|
|
17
|
+
| 項目 | 推奨値 | 既定との差 |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| Claude Code バージョン | **2.1.150 以降** | 古いと auto-cleanup 不在 |
|
|
20
|
+
| `worktree.baseRef` | **`"head"`** | 既定は `"fresh"` (= `origin/<default>` から作成) |
|
|
21
|
+
|
|
22
|
+
設定しなくても skill 自体は動くが、以下の問題に遭遇しやすくなる:
|
|
23
|
+
|
|
24
|
+
- 古い CC: 各 wave 終了時に `git worktree remove` が走らず `.claude/worktrees/` に
|
|
25
|
+
dead worktree が積もる
|
|
26
|
+
- `baseRef: fresh`: push 前のローカルコミットが worktree から見えず、agent が
|
|
27
|
+
「ファイルが存在しない」と誤判定して fresh create に走る等の事故が起きる
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 推奨個人設定
|
|
32
|
+
|
|
33
|
+
`~/.claude/settings.json` (グローバル個人設定) に以下を追加する:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"worktree": {
|
|
38
|
+
"baseRef": "head"
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
既存の `~/.claude/settings.json` がある場合はマージする。例:
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"permissions": {
|
|
48
|
+
"defaultMode": "auto"
|
|
49
|
+
},
|
|
50
|
+
"model": "sonnet",
|
|
51
|
+
"worktree": {
|
|
52
|
+
"baseRef": "head"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### なぜプロジェクト設定 (`.claude/settings.json`) ではなく個人設定か
|
|
58
|
+
|
|
59
|
+
`worktree.baseRef` は **Claude Code 公式機能の動作モード切替** であり、C3 固有の
|
|
60
|
+
設定ではない。C3 が利用者の Claude Code 設定全体を書き換える形になると
|
|
61
|
+
「C3 は `.claude/` 内に収まるフレームワーク」という設計思想と矛盾するため、
|
|
62
|
+
C3 配布物には含めず利用者個人の判断で適用する形にしている。
|
|
63
|
+
|
|
64
|
+
### worktree.baseRef: "head" の意味
|
|
65
|
+
|
|
66
|
+
| 値 | base 元 |
|
|
67
|
+
|---|---|
|
|
68
|
+
| `"fresh"` (既定) | `origin/<default-branch>` (例: `origin/main`) |
|
|
69
|
+
| `"head"` | 現在の local HEAD |
|
|
70
|
+
|
|
71
|
+
`"head"` にすると、push 前のローカルコミットが worktree にも含まれる。
|
|
72
|
+
parallel-agents は「直近の修正を反映した worktree で並列実装させる」ことが目的のため、
|
|
73
|
+
`"head"` の方が C3 のワークフローと整合する。
|
|
74
|
+
|
|
75
|
+
### 副作用
|
|
76
|
+
|
|
77
|
+
- 作業中のローカル HEAD がコミットされていない(dirty)状態だと、その dirty も
|
|
78
|
+
worktree に持ち込まれる。これは通常のメリット(ローカル変更を反映)と表裏一体
|
|
79
|
+
- 壊れた HEAD から worktree を作ると、worktree も壊れる。コミット前にビルドが
|
|
80
|
+
通っているかは利用者が確認する責任
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Claude Code バージョン要件
|
|
85
|
+
|
|
86
|
+
### 2.1.150 以降を推奨する理由
|
|
87
|
+
|
|
88
|
+
`isolation: "worktree"` 付き Agent が **完了時に worktree を auto-cleanup** する
|
|
89
|
+
挙動が安定したのが 2.1.150 系。これにより:
|
|
90
|
+
|
|
91
|
+
- `.claude/worktrees/` 配下に dead worktree が残らない
|
|
92
|
+
- `worktree-agent-<id>` ブランチも自動削除される
|
|
93
|
+
- 親 Claude が明示的に `git worktree remove` を呼ぶ必要がない
|
|
94
|
+
|
|
95
|
+
2.1.150 未満の場合、SKILL.md Step 2-F-3 のフォールバック手順
|
|
96
|
+
(`git worktree remove -f -f` + `git branch -D worktree-agent-<id>`)が
|
|
97
|
+
**毎回必要** になる。dead worktree が積み重なるとパフォーマンス・容量への
|
|
98
|
+
影響もあるため、可能ならアップグレードを推奨する。
|
|
99
|
+
|
|
100
|
+
### auto-cleanup の信頼度
|
|
101
|
+
|
|
102
|
+
検証実績 (2026-05-23 〜 2026-05-24):
|
|
103
|
+
|
|
104
|
+
- foreground / background / 並列 / 失敗 (exit 1) の全パターンで 10/10 cleanup 確認
|
|
105
|
+
- ごく稀に **外部要因による一時的ファイルロック** で cleanup が失敗するケースを
|
|
106
|
+
1 件観測 (約 1/11 以下)。原因は未特定(アンチウィルス・バックアップソフト・
|
|
107
|
+
その他常駐プロセスのいずれかの可能性)
|
|
108
|
+
- SKILL.md Step 2-F-3 の残留チェック + `git worktree prune` フォールバックで
|
|
109
|
+
実害なく吸収される設計
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 設定後の動作確認
|
|
114
|
+
|
|
115
|
+
1. 設定追加後、Claude Code を再起動する(または `/config` で反映)
|
|
116
|
+
2. C3 で wt_tester を 1 件起動するだけの軽量タスクを実行(最も簡単な検証):
|
|
117
|
+
- `/start` → 「直接指示する」→ 「wt_tester を 1 個 isolation:worktree で pwd だけ実行して」
|
|
118
|
+
3. 完了通知後、`git worktree list --porcelain` と `ls .claude/worktrees/` で
|
|
119
|
+
両方 main 以外が無い状態を確認
|
|
120
|
+
|
|
121
|
+
### baseRef 適用の確認
|
|
122
|
+
|
|
123
|
+
ローカルだけにある commit がある状態で wt_tester を起動し、worktree 内で
|
|
124
|
+
`git log -1` が **その commit を指していれば** baseRef: "head" が効いている。
|
|
125
|
+
`origin/main` の commit を指していれば既定(`fresh`)のまま。
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## トラブルシューティング
|
|
130
|
+
|
|
131
|
+
### Q. worktree が cleanup されず残る
|
|
132
|
+
|
|
133
|
+
A. 以下の順に対処:
|
|
134
|
+
|
|
135
|
+
1. `git worktree list --porcelain` で main 以外の登録があるか確認
|
|
136
|
+
2. 登録があれば `git worktree remove -f -f <path>` で削除
|
|
137
|
+
3. 物理 dir だけ残っていれば `rm -rf .claude/worktrees/agent-*`
|
|
138
|
+
4. ブランチが残っていれば `git branch -d worktree-agent-<id>` (force 必要なら `-D`)
|
|
139
|
+
|
|
140
|
+
これらは parallel-agents SKILL.md Step 2-F-3 のフォールバック手順そのもの。
|
|
141
|
+
auto-cleanup が動いている環境ではほぼ no-op になる。
|
|
142
|
+
|
|
143
|
+
### Q. wt_developer / wt_tester が「ファイルが存在しない」と言う
|
|
144
|
+
|
|
145
|
+
A. `worktree.baseRef` が `"fresh"` (既定) のまま、かつローカルに push 前の
|
|
146
|
+
コミットでそのファイルを追加しているケースが典型。`worktree.baseRef: "head"` を
|
|
147
|
+
設定するか、対象 commit を push してから再実行する。
|
|
148
|
+
|
|
149
|
+
### Q. 設定変更しても効かない
|
|
150
|
+
|
|
151
|
+
A. Claude Code の設定読み込みはセッション開始時。`/config` で再読み込みするか、
|
|
152
|
+
Claude Code を再起動する。
|
{claude_code_conductor-2.15.0 → claude_code_conductor-2.15.2}/.claude/skills/codex-review/SKILL.md
RENAMED
|
@@ -202,10 +202,10 @@ AskUserQuestion で確認する:
|
|
|
202
202
|
"options": [
|
|
203
203
|
{ "label": "確認完了", "description": "レポートを確認した" },
|
|
204
204
|
{ "label": "別ファイルも続けてレビューする", "description": "Step 1 から再実行する" },
|
|
205
|
-
{ "label": "C3 レビューフローへ引き継ぐ", "description": "
|
|
205
|
+
{ "label": "C3 レビューフローへ引き継ぐ", "description": "review-phase スキルへ引き継いでフェーズ E を実行する" }
|
|
206
206
|
]
|
|
207
207
|
}]
|
|
208
208
|
}
|
|
209
209
|
```
|
|
210
210
|
|
|
211
|
-
「C3 レビューフローへ引き継ぐ」が選択された場合は Skill ツールで `
|
|
211
|
+
「C3 レビューフローへ引き継ぐ」が選択された場合は Skill ツールで `review-phase` を呼び出す。
|
|
@@ -41,7 +41,7 @@ Claude Code のサブエージェントは **更にサブエージェントを s
|
|
|
41
41
|
|
|
42
42
|
- plan-report が `.claude/reports/plan-report-*.md` の形式で配置され、YAML フロントマターを持つこと
|
|
43
43
|
- フロントマターが無ければ `.claude/skills/dev-workflow/SKILL.md` の D-1〜D-5 ceremony へフォールバック
|
|
44
|
-
- Claude Code の Agent ツールが `isolation: "worktree"` パラメータをサポートしていること(v2.1.x
|
|
44
|
+
- Claude Code の Agent ツールが `isolation: "worktree"` パラメータをサポートしていること(v2.1.x 以降)。v2.1.150 未満では Agent 完了時の worktree auto-cleanup が動作しないため、2-F-3 のフォールバック手順が毎回必要になる挙動差がある(利用者向け推奨設定は [`.claude/docs/parallel-agents-setup.md`](../../docs/parallel-agents-setup.md) を参照)
|
|
45
45
|
|
|
46
46
|
---
|
|
47
47
|
|
|
@@ -208,7 +208,7 @@ worktree path は Agent ツール返り値の `<worktree><worktreePath>...</work
|
|
|
208
208
|
}
|
|
209
209
|
```
|
|
210
210
|
|
|
211
|
-
- 「リトライ」 → 失敗タスクのみ 2-C
|
|
211
|
+
- 「リトライ」 → 失敗タスクのみ 2-C を再実行(失敗 worktree は auto-cleanup 済みのことが多いが、2-F-3 の残留チェックを実施してから再開すること。残留があった場合のみ事前に `git worktree remove -f -f` で削除)
|
|
212
212
|
- 「スキップして次の wave へ」 → 失敗内容をセッションファイルの `## 試みたが失敗したアプローチ` に追記して次の wave へ
|
|
213
213
|
- 「中断」 → セッションファイルの該当 wave 行は `- [ ]` のままにしてスキル終了
|
|
214
214
|
|
|
@@ -241,15 +241,29 @@ git commit -m "Wave {N}: {要約}"
|
|
|
241
241
|
|
|
242
242
|
メッセージには各タスクの目的を簡潔にまとめる(例: 「Wave 1: auth ログイン/ログアウト実装」)。
|
|
243
243
|
|
|
244
|
-
#### 2-F-3: worktree
|
|
244
|
+
#### 2-F-3: worktree クリーンアップ(残留チェックのみ)
|
|
245
245
|
|
|
246
|
-
|
|
246
|
+
Claude Code 2.1.x(少なくとも 2.1.150 で実測確認、2026-05-23)以降、`isolation:"worktree"` 付き Agent は完了時に **物理ディレクトリ・worktree 登録・`worktree-agent-*` ブランチが自動削除** される(foreground / background / 並列 / 失敗ケース全パターンで検証済み。詳細: `.claude/reports/worktree-cleanup-verification-20260523-234110.md`)。
|
|
247
|
+
|
|
248
|
+
そのため明示的な `git worktree remove` は **不要**。auto-cleanup が race や障害でスキップされた場合のセーフティとして残留チェックのみ行う:
|
|
247
249
|
|
|
248
250
|
```bash
|
|
249
|
-
|
|
250
|
-
git worktree
|
|
251
|
+
# 念のため worktree 登録の残留を確認、あれば prune(物理ディレクトリも片付く)
|
|
252
|
+
git worktree list --porcelain
|
|
251
253
|
git worktree prune
|
|
252
|
-
|
|
254
|
+
|
|
255
|
+
# 念のため worktree-agent-* ブランチの残留チェック(あれば手動削除を検討)
|
|
256
|
+
# Windows PowerShell では grep 未インストール時に動作しないため、代替として
|
|
257
|
+
# `git branch --list "worktree-agent-*"` を使う:
|
|
258
|
+
git branch -a | grep -E "worktree-agent-" || true
|
|
259
|
+
# Windows 代替: git branch --list "worktree-agent-*"
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
残留があった場合のみ手動 cleanup(古い Claude Code バージョン互換 or auto-cleanup 失敗ケース):
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
git worktree remove -f -f .claude/worktrees/agent-{id} # -f -f は claude agent lock 残留対策
|
|
266
|
+
git branch -D worktree-agent-{id}
|
|
253
267
|
```
|
|
254
268
|
|
|
255
269
|
#### 2-F-4: セッション記録
|
|
@@ -285,5 +299,5 @@ checkpoint の summary には KEEP ルール(設計判断・決定事項・解
|
|
|
285
299
|
- 並列実行で **特定パターンが詰まりがち** と気付いたら、セッションファイルの `## 試みたが失敗したアプローチ` に追記し `patterns` に登録する
|
|
286
300
|
- 並列度を増やして race の兆候が出た場合は本 skill の上限値 15 を見直す(PoC では 15 並列まで 0 失敗確認済み)
|
|
287
301
|
- agent ツール並列起動の `<task-notification>` の到着順序は保証されないため、結果集約の表は task_id でソートして提示する
|
|
288
|
-
- worktree
|
|
302
|
+
- Claude Code 2.1.x 以降は Agent 完了時に worktree auto-cleanup されるため、明示的な `git worktree remove` は基本不要(2-F-3 参照)。`.claude/worktrees/` に dead worktree が残る場合は古い Claude Code バージョンで作成された残骸の可能性が高い
|
|
289
303
|
|
|
@@ -60,6 +60,7 @@ site/
|
|
|
60
60
|
.claude/docs/ruflo_research_result.md
|
|
61
61
|
.claude/docs/C3_hnsw_機能追加詳細設計.md
|
|
62
62
|
.claude/docs/C3_利用状況可視化.md
|
|
63
|
+
.claude/docs/C3_tier_routing_cost_integration_設計.md
|
|
63
64
|
.claude/docs/grill-me機能を実装する際の考慮点とC3との相性や超えるべき壁.md
|
|
64
65
|
.claude/docs/C3のconfig_policyとversion_upgradeの考慮点と超えるべき壁.md
|
|
65
66
|
|
|
@@ -1,5 +1,71 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v2.15.2 (2026-05-24)
|
|
4
|
+
|
|
5
|
+
### 改善
|
|
6
|
+
|
|
7
|
+
- **parallel-agents skill Step 2-F-3 を縮小**: Claude Code 2.1.150 で
|
|
8
|
+
`isolation:"worktree"` 付き Agent 完了時の worktree auto-cleanup 動作を
|
|
9
|
+
4 シナリオ (foreground / background / 並列 / 失敗 exit 1) で確定検証。
|
|
10
|
+
従来の「親 Claude が `git worktree remove -f -f` を毎回実行」を
|
|
11
|
+
「残留チェック + `git worktree prune` のみ」に縮小。
|
|
12
|
+
古い Claude Code バージョン (< 2.1.150) や稀な外部要因による cleanup
|
|
13
|
+
失敗時のフォールバック手順は残置。
|
|
14
|
+
- Step 2-E (リトライ) と 知識蓄積セクションも同方針に整合化。
|
|
15
|
+
|
|
16
|
+
### 追加
|
|
17
|
+
|
|
18
|
+
- **`.claude/docs/parallel-agents-setup.md` 新規**: parallel-agents
|
|
19
|
+
利用者向けの推奨個人設定リファレンス。`worktree.baseRef: "head"` /
|
|
20
|
+
Claude Code バージョン要件 / トラブルシュート手順を集約。
|
|
21
|
+
- **README.md に「推奨個人設定」セクション**: 最小設定例と詳細 docs への
|
|
22
|
+
リンクを `parallel-agents` 紹介の直後に追加。
|
|
23
|
+
|
|
24
|
+
### 回帰防御
|
|
25
|
+
|
|
26
|
+
- `tests/test_db.py` 新規 (4 + 1 件): `locate_c3_db` の env 優先 /
|
|
27
|
+
C3_PO_DB_PATH legacy fallback / 親遡り / 無効 env fallback /
|
|
28
|
+
ディレクトリ指定 fallback の各経路を契約として固定。
|
|
29
|
+
- `tests/test_worktree_guard.py` に env gate 未設定時の no-op テスト
|
|
30
|
+
追加 (PO_WORKTREE_GUARD env 廃止移行を機械検出する番犬テスト)。
|
|
31
|
+
- 合計 5 件追加で 928 → 934 PASS (回帰なし)。
|
|
32
|
+
|
|
33
|
+
### 配布
|
|
34
|
+
|
|
35
|
+
- `.claude/docs/C3_tier_routing_cost_integration_設計.md` (個人作業ノート)
|
|
36
|
+
を 3 ファイル同期 (.gitignore / `_excludes.py` / `hatch_build.py`) で
|
|
37
|
+
配布除外。
|
|
38
|
+
|
|
39
|
+
### 内部整理
|
|
40
|
+
|
|
41
|
+
- SKILL.md (LLM 向け) と人間向け推奨ドキュメントの責務を文書ヒエラルキー
|
|
42
|
+
思想 (SKILL.md = LLM 行動指針 / docs = 人間リファレンス) に従って分離。
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## v2.15.1 (2026-05-22)
|
|
47
|
+
|
|
48
|
+
### 変更
|
|
49
|
+
- C3 `/code-review` skill を `/review-phase` にリネーム。
|
|
50
|
+
Claude Code v2.1.147 で Built-in `/code-review` が新規追加され、
|
|
51
|
+
コマンド名が完全衝突したため。
|
|
52
|
+
|
|
53
|
+
### 配布先での手動クリーンアップ手順(必須)
|
|
54
|
+
|
|
55
|
+
`c3 update` は配布物の削除を検出しないため、配布先プロジェクトで以下を手動実行:
|
|
56
|
+
|
|
57
|
+
**bash / macOS / Linux:**
|
|
58
|
+
```bash
|
|
59
|
+
rm -rf .claude/skills/code-review/
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**PowerShell (Windows):**
|
|
63
|
+
```powershell
|
|
64
|
+
Remove-Item -Recurse -Force .claude\skills\code-review\
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
3
69
|
## v2.15.0 (2026-05-22)
|
|
4
70
|
|
|
5
71
|
### 変更
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: claude-code-conductor
|
|
3
|
-
Version: 2.15.
|
|
3
|
+
Version: 2.15.2
|
|
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
|
|
@@ -64,7 +64,7 @@ Claude Code Conductor(C3)は「親 Claude が複数の専門エージェン
|
|
|
64
64
|
|
|
65
65
|
```
|
|
66
66
|
ユーザー
|
|
67
|
-
↓ /start, /develop, /
|
|
67
|
+
↓ /start, /develop, /review-phase, /doc, /mcp-config, /extract-lib ...
|
|
68
68
|
親 Claude(オーケストレーター)
|
|
69
69
|
├─ interviewer ← ヒアリング
|
|
70
70
|
├─ architect ← 設計
|
|
@@ -174,7 +174,7 @@ C3 のスラッシュコマンドはすべてスキル(`skills/{name}/SKILL.md
|
|
|
174
174
|
| `/setup` | コーディング規約の設定(coding-standards・project-conventions 生成) |
|
|
175
175
|
| `/start` | 開発ワークフローの入口(ヒアリング/設計/計画/実装 から選択) |
|
|
176
176
|
| `/develop` | TDD フェーズから直接開始 |
|
|
177
|
-
| `/
|
|
177
|
+
| `/review-phase` | レビューフェーズから直接開始(code-reviewer + security-reviewer) |
|
|
178
178
|
| `/promote-pattern` | 蓄積されたパターンを rules/ または skills/ に昇格 |
|
|
179
179
|
|
|
180
180
|
### ユーティリティ
|
|
@@ -212,7 +212,7 @@ C3 のスラッシュコマンドはすべてスキル(`skills/{name}/SKILL.md
|
|
|
212
212
|
|
|
213
213
|
`/start` 実行後は、各フェーズの承認を進めるだけで最後まで自動的に流れます。
|
|
214
214
|
|
|
215
|
-
> **公式コマンドとの名前衝突について:** C3 のスキル名は Claude Code
|
|
215
|
+
> **公式コマンドとの名前衝突について:** C3 のスキル名は Claude Code 公式コマンドと重複しないよう設計しています。`/review-phase`(≠ 公式 `/code-review` / `/review`)、`/mcp-config`(≠ 公式 `/mcp`)はこの方針に基づく命名です。公式コマンドが追加された場合は衝突回避のために本フレームワークの skill 名を変更することがあります(v2.15.1 で `/code-review` → `/review-phase` に変更しました)。
|
|
216
216
|
|
|
217
217
|
---
|
|
218
218
|
|
|
@@ -375,6 +375,27 @@ Copy-Item -Recurse claude-code-conductor\.claude your-project\
|
|
|
375
375
|
|
|
376
376
|
TDD を伴う機能実装は、planner が「test- → impl- → confirm-」の 3 タスクペアに分解し、各 wave 内で独立機能間で並列起動されます。並列実行時は worktree 専用の `wt_tester` / `wt_developer` / `wt_systematic-debugger` agent が使用され、レポートは `task_id` ベースのファイル名で出力されます。
|
|
377
377
|
|
|
378
|
+
### 推奨個人設定 (`~/.claude/settings.json`)
|
|
379
|
+
|
|
380
|
+
`parallel-agents` を快適に使うため、以下 2 点を **個人設定として** 推奨します(C3 配布物には含めません):
|
|
381
|
+
|
|
382
|
+
| 項目 | 推奨値 | 理由 |
|
|
383
|
+
|---|---|---|
|
|
384
|
+
| Claude Code バージョン | 2.1.150 以降 | worktree auto-cleanup の安定動作 |
|
|
385
|
+
| `worktree.baseRef` | `"head"` | push 前のローカルコミットを worktree に含める |
|
|
386
|
+
|
|
387
|
+
最小設定例:
|
|
388
|
+
|
|
389
|
+
```json
|
|
390
|
+
{
|
|
391
|
+
"worktree": {
|
|
392
|
+
"baseRef": "head"
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
詳細(背景・副作用・トラブルシュート)は [`.claude/docs/parallel-agents-setup.md`](./.claude/docs/parallel-agents-setup.md) を参照してください。
|
|
398
|
+
|
|
378
399
|
---
|
|
379
400
|
|
|
380
401
|
## セッション管理
|
|
@@ -17,7 +17,7 @@ Claude Code Conductor(C3)は「親 Claude が複数の専門エージェン
|
|
|
17
17
|
|
|
18
18
|
```
|
|
19
19
|
ユーザー
|
|
20
|
-
↓ /start, /develop, /
|
|
20
|
+
↓ /start, /develop, /review-phase, /doc, /mcp-config, /extract-lib ...
|
|
21
21
|
親 Claude(オーケストレーター)
|
|
22
22
|
├─ interviewer ← ヒアリング
|
|
23
23
|
├─ architect ← 設計
|
|
@@ -127,7 +127,7 @@ C3 のスラッシュコマンドはすべてスキル(`skills/{name}/SKILL.md
|
|
|
127
127
|
| `/setup` | コーディング規約の設定(coding-standards・project-conventions 生成) |
|
|
128
128
|
| `/start` | 開発ワークフローの入口(ヒアリング/設計/計画/実装 から選択) |
|
|
129
129
|
| `/develop` | TDD フェーズから直接開始 |
|
|
130
|
-
| `/
|
|
130
|
+
| `/review-phase` | レビューフェーズから直接開始(code-reviewer + security-reviewer) |
|
|
131
131
|
| `/promote-pattern` | 蓄積されたパターンを rules/ または skills/ に昇格 |
|
|
132
132
|
|
|
133
133
|
### ユーティリティ
|
|
@@ -165,7 +165,7 @@ C3 のスラッシュコマンドはすべてスキル(`skills/{name}/SKILL.md
|
|
|
165
165
|
|
|
166
166
|
`/start` 実行後は、各フェーズの承認を進めるだけで最後まで自動的に流れます。
|
|
167
167
|
|
|
168
|
-
> **公式コマンドとの名前衝突について:** C3 のスキル名は Claude Code
|
|
168
|
+
> **公式コマンドとの名前衝突について:** C3 のスキル名は Claude Code 公式コマンドと重複しないよう設計しています。`/review-phase`(≠ 公式 `/code-review` / `/review`)、`/mcp-config`(≠ 公式 `/mcp`)はこの方針に基づく命名です。公式コマンドが追加された場合は衝突回避のために本フレームワークの skill 名を変更することがあります(v2.15.1 で `/code-review` → `/review-phase` に変更しました)。
|
|
169
169
|
|
|
170
170
|
---
|
|
171
171
|
|
|
@@ -328,6 +328,27 @@ Copy-Item -Recurse claude-code-conductor\.claude your-project\
|
|
|
328
328
|
|
|
329
329
|
TDD を伴う機能実装は、planner が「test- → impl- → confirm-」の 3 タスクペアに分解し、各 wave 内で独立機能間で並列起動されます。並列実行時は worktree 専用の `wt_tester` / `wt_developer` / `wt_systematic-debugger` agent が使用され、レポートは `task_id` ベースのファイル名で出力されます。
|
|
330
330
|
|
|
331
|
+
### 推奨個人設定 (`~/.claude/settings.json`)
|
|
332
|
+
|
|
333
|
+
`parallel-agents` を快適に使うため、以下 2 点を **個人設定として** 推奨します(C3 配布物には含めません):
|
|
334
|
+
|
|
335
|
+
| 項目 | 推奨値 | 理由 |
|
|
336
|
+
|---|---|---|
|
|
337
|
+
| Claude Code バージョン | 2.1.150 以降 | worktree auto-cleanup の安定動作 |
|
|
338
|
+
| `worktree.baseRef` | `"head"` | push 前のローカルコミットを worktree に含める |
|
|
339
|
+
|
|
340
|
+
最小設定例:
|
|
341
|
+
|
|
342
|
+
```json
|
|
343
|
+
{
|
|
344
|
+
"worktree": {
|
|
345
|
+
"baseRef": "head"
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
詳細(背景・副作用・トラブルシュート)は [`.claude/docs/parallel-agents-setup.md`](./.claude/docs/parallel-agents-setup.md) を参照してください。
|
|
351
|
+
|
|
331
352
|
---
|
|
332
353
|
|
|
333
354
|
## セッション管理
|
|
@@ -39,6 +39,7 @@ EXCLUDE_PATTERNS: tuple[str, ...] = (
|
|
|
39
39
|
"docs/ruflo_research_result.md",
|
|
40
40
|
"docs/C3_hnsw_機能追加詳細設計.md",
|
|
41
41
|
"docs/C3_利用状況可視化.md",
|
|
42
|
+
"docs/C3_tier_routing_cost_integration_設計.md",
|
|
42
43
|
"docs/grill-me機能を実装する際の考慮点とC3との相性や超えるべき壁.md",
|
|
43
44
|
"docs/C3のconfig_policyとversion_upgradeの考慮点と超えるべき壁.md",
|
|
44
45
|
"docs/codex対応/*",
|
|
@@ -36,6 +36,7 @@ EXCLUDE_PATTERNS: tuple[str, ...] = (
|
|
|
36
36
|
"docs/ruflo_research_result.md",
|
|
37
37
|
"docs/C3_hnsw_機能追加詳細設計.md",
|
|
38
38
|
"docs/C3_利用状況可視化.md",
|
|
39
|
+
"docs/C3_tier_routing_cost_integration_設計.md",
|
|
39
40
|
"docs/grill-me機能を実装する際の考慮点とC3との相性や超えるべき壁.md",
|
|
40
41
|
"docs/C3のconfig_policyとversion_upgradeの考慮点と超えるべき壁.md",
|
|
41
42
|
"docs/codex対応/*",
|
|
@@ -13,6 +13,13 @@ from c3.adapters import print_adapter_actions, scaffold_adapters
|
|
|
13
13
|
from c3.paths import templates_dir
|
|
14
14
|
from c3.platforms import PLATFORM_CHOICES, expand_platforms
|
|
15
15
|
|
|
16
|
+
# 廃止済み skill パス(リリース履歴)。
|
|
17
|
+
# `c3 update` 完了時に配布先で残存していたら警告を stderr に表示する。
|
|
18
|
+
# 削除はしない(`c3 update` の "削除を検出しない" 設計を尊重)。
|
|
19
|
+
DEPRECATED_PATHS: tuple[tuple[str, str], ...] = (
|
|
20
|
+
(".claude/skills/code-review", "v2.15.1 で /review-phase にリネーム(Built-in /code-review と衝突回避)"),
|
|
21
|
+
)
|
|
22
|
+
|
|
16
23
|
|
|
17
24
|
def register(subparsers: argparse._SubParsersAction) -> None:
|
|
18
25
|
parser = subparsers.add_parser(
|
|
@@ -97,9 +104,35 @@ def handle(args: argparse.Namespace) -> int:
|
|
|
97
104
|
print("up to date")
|
|
98
105
|
elif not args.dry_run:
|
|
99
106
|
print(f"{changed} file(s) updated")
|
|
107
|
+
_warn_deprecated_paths(target_root)
|
|
100
108
|
return 0
|
|
101
109
|
|
|
102
110
|
|
|
111
|
+
def _warn_deprecated_paths(dest_root: Path) -> None:
|
|
112
|
+
"""配布先で廃止済み skill パスが残っていたら stderr に警告を出力。
|
|
113
|
+
|
|
114
|
+
DEPRECATED_PATHS の各エントリ (rel_path, reason) について
|
|
115
|
+
dest_root / rel_path の存在を確認し、見つかれば warning メッセージを stderr に出す。
|
|
116
|
+
|
|
117
|
+
本関数は読み取り専用(exists() チェックと stderr 出力のみ)で副作用がないため、
|
|
118
|
+
`--dry-run` 時にも常に実行される。削除は行わない(手動クリーンアップを促すのみ)。
|
|
119
|
+
`c3 update` の "削除を検出しない" 設計を尊重した実装。
|
|
120
|
+
"""
|
|
121
|
+
found = []
|
|
122
|
+
for rel_path, reason in DEPRECATED_PATHS:
|
|
123
|
+
candidate = dest_root / Path(rel_path)
|
|
124
|
+
if candidate.exists():
|
|
125
|
+
found.append((rel_path, reason))
|
|
126
|
+
if not found:
|
|
127
|
+
return
|
|
128
|
+
print("", file=sys.stderr)
|
|
129
|
+
print("warning: deprecated path(s) detected (manual cleanup recommended):", file=sys.stderr)
|
|
130
|
+
for rel_path, reason in found:
|
|
131
|
+
print(f" - {rel_path}: {reason}", file=sys.stderr)
|
|
132
|
+
print("", file=sys.stderr)
|
|
133
|
+
print(" c3 update does not delete files. Remove the path(s) manually.", file=sys.stderr)
|
|
134
|
+
|
|
135
|
+
|
|
103
136
|
def _walk_diff(template: Path, dest: Path):
|
|
104
137
|
"""Yield (action, absolute_dest_path) tuples for files that differ.
|
|
105
138
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""src/c3/cli_update.py の _warn_deprecated_paths と DEPRECATED_PATHS のテスト。"""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
import pytest
|
|
7
|
+
|
|
8
|
+
from c3.cli_update import DEPRECATED_PATHS, _warn_deprecated_paths
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_deprecated_paths_constant_is_tuple_of_pairs():
|
|
12
|
+
"""DEPRECATED_PATHS は tuple であり、各要素は (rel_path, reason) の 2 要素タプル。"""
|
|
13
|
+
assert isinstance(DEPRECATED_PATHS, tuple)
|
|
14
|
+
for entry in DEPRECATED_PATHS:
|
|
15
|
+
assert isinstance(entry, tuple)
|
|
16
|
+
assert len(entry) == 2
|
|
17
|
+
rel_path, reason = entry
|
|
18
|
+
assert isinstance(rel_path, str)
|
|
19
|
+
assert isinstance(reason, str)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def test_no_warning_when_deprecated_path_absent(tmp_path: Path, capsys: pytest.CaptureFixture[str]):
|
|
23
|
+
"""dest_root 配下に廃止パスが存在しない場合、stderr に何も出力しない。"""
|
|
24
|
+
_warn_deprecated_paths(tmp_path)
|
|
25
|
+
captured = capsys.readouterr()
|
|
26
|
+
assert captured.err == ""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
def test_warning_when_deprecated_path_present(tmp_path: Path, capsys: pytest.CaptureFixture[str]):
|
|
30
|
+
"""dest_root 配下に廃止パスが残存していたら stderr に warning を出力する。"""
|
|
31
|
+
if not DEPRECATED_PATHS:
|
|
32
|
+
pytest.skip("DEPRECATED_PATHS が空")
|
|
33
|
+
rel_path, _ = DEPRECATED_PATHS[0]
|
|
34
|
+
target = tmp_path / rel_path
|
|
35
|
+
target.mkdir(parents=True, exist_ok=True)
|
|
36
|
+
_warn_deprecated_paths(tmp_path)
|
|
37
|
+
captured = capsys.readouterr()
|
|
38
|
+
assert "deprecated" in captured.err.lower()
|
|
39
|
+
assert rel_path in captured.err
|
|
40
|
+
assert "manual" in captured.err.lower()
|
|
41
|
+
assert "remove" in captured.err.lower()
|