claude-code-conductor 2.40.0__tar.gz → 2.41.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.40.0 → claude_code_conductor-2.41.0}/.claude/breaking-changes.txt +1 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/deletions.txt +3 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/select_tier.py +12 -10
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/session_stop.py +0 -2
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/settings.json +1 -1
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/SKILL.md +176 -18
- claude_code_conductor-2.41.0/.claude/skills/dev-workflow/scripts/record_agent_outcome.py +610 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/parallel-agents/SKILL.md +16 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/CHANGELOG.md +23 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/PKG-INFO +1 -1
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/__init__.py +1 -1
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/_db_params.py +5 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_tier.py +100 -91
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/db.py +262 -331
- claude_code_conductor-2.41.0/src/c3/migrations/004_agent_outcomes.sql +46 -0
- claude_code_conductor-2.41.0/tests/hooks/test_record_agent_outcome.py +1338 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_select_tier.py +229 -87
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_select_tier_escalation.py +8 -55
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_session_start.py +9 -3
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_session_stop.py +66 -0
- claude_code_conductor-2.41.0/tests/test_cli_tier.py +862 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_db.py +912 -731
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_migrate.py +238 -5
- claude_code_conductor-2.40.0/.claude/skills/dev-workflow/scripts/record_tier_outcome.py +0 -244
- claude_code_conductor-2.40.0/tests/hooks/test_record_tier_outcome.py +0 -616
- claude_code_conductor-2.40.0/tests/test_cli_tier.py +0 -1143
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/CLAUDE.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/architect.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/code-reviewer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/design-critic.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/developer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/doc-writer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/interviewer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/planner.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/project-setup.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/security-reviewer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/systematic-debugger.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/tester.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/wt_developer.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/wt_systematic-debugger.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/agents/wt_tester.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/docs/config-policy.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/docs/parallel-agents-setup.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/docs/platform-adapters.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/docs/settings.json.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/_hook_utils.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/check_agent_invocation.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/consolidate_memory.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/permission_handler.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/permission_handler_toast.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/planner_check.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/post_tool.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/pre_compact.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/pre_tool.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/recall_autorebuild.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/recall_inject.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/restore_session.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/session_start.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/session_utils.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/statusline.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/stop.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/hooks/worktree_guard.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/memory/.gitkeep +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/permission_rules.json +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/rules/promoted/index.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/brainstorm/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/codex-review/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/code-review-checklist.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/design-critic-rubric.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/design-rubric.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/interview-rubric.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/plan-design-guidelines.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/references/security-review-checklist.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/scripts/record_review_decision.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/scripts/review_hint_inject.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/develop/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/doc/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/extract-lib/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/init-session/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/init-session/scripts/session_guard.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/mcp-config/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/pattern-status/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/promote-pattern/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/recall/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/report-timestamp/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/report-timestamp/scripts/get_timestamp.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/review-phase/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/setup/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/setup/reference.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/setup/templates/coding-standards-template.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/setup/templates/project-conventions-template.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/start/SKILL.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/state/.gitkeep +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.gitignore +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/ARCHITECTURE.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSES/fastembed-LICENSE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSES/fastembed-NOTICE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSES/numpy-LICENSE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSES/onnxruntime-LICENSE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/LICENSES/paraphrase-multilingual-MiniLM-L12-v2-LICENSE +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/README.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/hatch_build.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/pyproject.toml +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/__main__.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/_excludes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/_terminal.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/adapters.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_ask.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_doctor.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_init.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_list.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_plan.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_recall.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/cli_update.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/embedding.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/gitutil.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/mcp_server.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrate.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrations/001_initial.sql +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrations/002_agent_cost_runs.sql +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrations/003_tier_cost.sql +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrations/README.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/migrations/__init__.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/paths.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/plan_validator.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/platforms.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/pricing.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/question.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/recall_chunker.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/recall_index.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/src/c3/usage_ingester.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/__init__.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/conftest.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/fixtures/usage/README.md +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/fixtures/usage/mainline.jsonl +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/fixtures/usage/subagents/agent-deadbeef.jsonl +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/fixtures/usage/subagents/agent-deadbeef.meta.json +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/__init__.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_check_agent_invocation.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_consolidate_memory.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_hook_utils.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_permission_handler.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_permission_handler_toast.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_pip_reinstall_reminder.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_planner_check.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_planner_check_dev.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_post_tool.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_pre_tool.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_recall_autorebuild.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_recall_inject.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_record_review_decision.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_restore_session.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_review_hint_inject.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_session_utils.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_settings_local_absolute_paths.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_similarity_boost.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_statusline.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_statusline_template_sync.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_sync_check.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/hooks/test_template_guard.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/__init__.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/_skill_helpers.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_dev_workflow_no_task_type.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_init_session_no_task_type.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_planner_lightweight.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_recall_skill.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_session_backlog_reconciliation.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_session_guard.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_setup_templates.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_start_skill_bugfix_flow.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_start_skill_new_flow.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/skills/test_start_skill_security_audit_phase.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_adapters.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_check_deletions.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_ask.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_doctor.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_entry.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_init.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_list.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_plan.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_recall.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_update_breaking_changes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_cli_update_deletions.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_docstring_consistency.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_embedding.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_excludes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_extract_breaking_changes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_gitutil.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_mcp_server_elicit.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_paths.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_plan_validator.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_pre_compact.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_precompact_additional.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_precompact_toctou_fixes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_pricing.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_recall_chunker.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_recall_index.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_references_migration.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_session_utils_additional.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_skill_no_builtin_conflict.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_statusline.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_stop_additional.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_stop_hook.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_stop_precompact_fixes.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_sync_template_stop.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_template_pre_tool_hook.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_usage_ingester.py +0 -0
- {claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/tests/test_worktree_guard.py +0 -0
|
@@ -6,3 +6,4 @@
|
|
|
6
6
|
|
|
7
7
|
v2.11.0|summarize-memory agent + skill removed; replaced by `c3 recall`|summarize-memory エージェント / skill を完全廃止。代替は `c3 recall` の意味検索。
|
|
8
8
|
v2.20.0|hooks/schema.sql removed; SQLite schema is now managed by c3/migrations/ (auto-applied at session_start)|hooks/schema.sql を削除しました。SQLite スキーマは c3/migrations/ (wheel 内) で管理され session_start で自動適用されます。
|
|
9
|
+
v2.41.0|Learning tables tier_bandit/tier_recent_outcomes are DROPPED and learning data resets; record_tier_outcome.py replaced by record_agent_outcome.py; c3 tier stats --json shape changed; old db.py tier APIs removed or shimmed (shims removed next release)|
|
|
@@ -11,8 +11,9 @@ MVP スコープ(ユーザー承認済み):
|
|
|
11
11
|
|
|
12
12
|
学習データ:
|
|
13
13
|
- 結果は ``.claude/state/tier_selection.json`` に直近 1 件のみ書き込む
|
|
14
|
-
- dev-workflow
|
|
15
|
-
|
|
14
|
+
- dev-workflow の各フェーズ承認ゲート(並列タスク単位を含む)で
|
|
15
|
+
``record_agent_outcome.py`` がこの json を読んで ``agent_tier_bandit``
|
|
16
|
+
テーブルを更新する
|
|
16
17
|
|
|
17
18
|
入力 / 出力:
|
|
18
19
|
- stdin: UserPromptSubmit payload(``prompt`` フィールドを参照)
|
|
@@ -70,7 +71,7 @@ COMPLEX_KEYWORDS = frozenset({
|
|
|
70
71
|
"リファクタ", "再設計", "移行", "セキュリティ", "並行",
|
|
71
72
|
})
|
|
72
73
|
|
|
73
|
-
# 結果の永続化先(dev-workflow
|
|
74
|
+
# 結果の永続化先(dev-workflow の各フェーズ承認ゲートで record_agent_outcome.py が読む)
|
|
74
75
|
_HOOKS_DIR = os.path.dirname(os.path.abspath(__file__))
|
|
75
76
|
_CLAUDE_DIR = os.path.dirname(_HOOKS_DIR)
|
|
76
77
|
TIER_SELECTION_PATH = os.path.join(_CLAUDE_DIR, "state", "tier_selection.json")
|
|
@@ -244,7 +245,7 @@ def _read_prompt_history() -> list[dict]:
|
|
|
244
245
|
"""prompt-history.jsonl から末尾 N 行を読み込む。
|
|
245
246
|
|
|
246
247
|
各行は ``{"ts", "prompt_hash", "prompt_prefix", "complexity", "tier", "outcome"}``
|
|
247
|
-
の形式(
|
|
248
|
+
の形式(record_agent_outcome.py が書き込む)。
|
|
248
249
|
壊れた行はスキップ。ファイル不在時は空リスト。
|
|
249
250
|
"""
|
|
250
251
|
if not os.path.isfile(PROMPT_HISTORY_PATH):
|
|
@@ -440,7 +441,7 @@ def _db_failure_rate(complexity: str, tier: str) -> tuple:
|
|
|
440
441
|
c3_db = _load_c3_db_module()
|
|
441
442
|
if c3_db is None:
|
|
442
443
|
return None, 0
|
|
443
|
-
return c3_db.
|
|
444
|
+
return c3_db.read_agent_failure_rate("developer", complexity, tier)
|
|
444
445
|
|
|
445
446
|
|
|
446
447
|
def maybe_escalate(
|
|
@@ -500,7 +501,7 @@ def write_tier_selection(
|
|
|
500
501
|
) -> None:
|
|
501
502
|
"""直近の選択結果を ``tier_selection.json`` に書く。
|
|
502
503
|
|
|
503
|
-
|
|
504
|
+
record_agent_outcome.py がこの json を読んで agent_tier_bandit の α/β を更新する。
|
|
504
505
|
既存ファイルは上書きされる(最新 1 件のみ保持)。
|
|
505
506
|
|
|
506
507
|
``suggested_model`` を併せて書く。tier 名と model の短縮名は同一とする。
|
|
@@ -597,9 +598,10 @@ def build_additional_context(
|
|
|
597
598
|
suffix += " [cost-aware: 成功率拮抗のため低コスト Tier を選択]"
|
|
598
599
|
|
|
599
600
|
return (
|
|
600
|
-
f"[tier-routing 推奨] 複雑度: {complexity} / 推奨 Tier: {tier}({confidence}
|
|
601
|
-
f"
|
|
602
|
-
f"
|
|
601
|
+
f"[tier-routing 推奨] 複雑度: {complexity} / 推奨 Tier: {tier}({confidence}・developer 基準)。"
|
|
602
|
+
f" エージェント定義 frontmatter の model がデフォルトですが、Agent 呼び出し時に"
|
|
603
|
+
f" model: を明示指定すれば上書きできます(fork を除く)。"
|
|
604
|
+
f" コスト最適化したい場合は手動指定してください。{suffix}"
|
|
603
605
|
)
|
|
604
606
|
|
|
605
607
|
|
|
@@ -756,7 +758,7 @@ def main() -> int:
|
|
|
756
758
|
# DB ヘルパーが無い環境でも uniform 選択で推奨を返す
|
|
757
759
|
params = {t: (1.0, 1.0, 0) for t in TIERS}
|
|
758
760
|
else:
|
|
759
|
-
params = c3_db.
|
|
761
|
+
params = c3_db.read_agent_tier_params("developer", complexity)
|
|
760
762
|
|
|
761
763
|
# v2.24.0: cost_map をハイブリッド解決(実測 rate USD/MTok を主に、欠損 tier は静的単価で補完)。
|
|
762
764
|
# rate 化により measured(実測)と tier_reference_cost(静的)が同次元(USD/MTok)になり単位整合済み。
|
|
@@ -103,8 +103,6 @@ def main() -> int:
|
|
|
103
103
|
from c3.usage_ingester import ingest_session # noqa: PLC0415
|
|
104
104
|
project_dir = _Path(transcript_path).parent
|
|
105
105
|
ingest_session(session_id=session_id, project_dir=project_dir)
|
|
106
|
-
from c3.db import sync_tier_bandit_cost # noqa: PLC0415
|
|
107
|
-
sync_tier_bandit_cost()
|
|
108
106
|
except Exception as e:
|
|
109
107
|
print(f"[session_stop:usage_ingester] failed: {type(e).__name__}", file=sys.stderr)
|
|
110
108
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"Bash(python .claude/hooks/recall_autorebuild.py*)",
|
|
11
11
|
"Bash(python .claude/skills/dev-workflow/scripts/review_hint_inject.py*)",
|
|
12
12
|
"Bash(python .claude/skills/dev-workflow/scripts/record_review_decision.py*)",
|
|
13
|
-
"Bash(python .claude/skills/dev-workflow/scripts/
|
|
13
|
+
"Bash(python .claude/skills/dev-workflow/scripts/record_agent_outcome.py*)",
|
|
14
14
|
"Bash(python .claude/skills/init-session/scripts/session_guard.py*)",
|
|
15
15
|
"Read(**)",
|
|
16
16
|
"Glob(**)",
|
{claude_code_conductor-2.40.0 → claude_code_conductor-2.41.0}/.claude/skills/dev-workflow/SKILL.md
RENAMED
|
@@ -24,12 +24,26 @@ user-invocable: false
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
+
## tier-routing 結果記録の運用
|
|
28
|
+
|
|
29
|
+
各フェーズの承認ゲート・タスク単位で `record_agent_outcome.py` を呼び、role 別に実際に使われた tier の成功/失敗を記録する(architecture-report-20260702-214748.md §3-4)。全記録ブロック共通のルール:
|
|
30
|
+
|
|
31
|
+
- `--complexity` は必須。値は**ワークフロー開始時に UserPromptSubmit hook が表示した `[tier-routing 推奨]` 表示の複雑度**(simple/medium/complex)で、フェーズ A 冒頭でセッションファイルへ `tier-routing複雑度:` 行として 1 度だけ永続化する(本ワークフロー中に再判定しない)。以降の各ブロックの `{セッションファイルの tier-routing複雑度: 行の値}` はこの永続化された値を参照するプレースホルダ(`現在地:` フィールドと同じ、compaction・長時間セッション耐性のための設計)
|
|
32
|
+
- `--execution` は必須。interviewer/architect/planner を**親 Claude ペルソナ**で採用した場合は `persona`(bandit 更新なし・イベントログのみ)、**Agent ツールでサブエージェント起動した場合は `subagent`**(bandit 更新あり)を渡す。developer/tester は dev-workflow では常に `subagent`
|
|
33
|
+
- `--execution persona` のブロックは `--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}` も明記する。record_agent_outcome.py は persona 実行かつ `--tier` 省略時に常に `unknown` 固定で記録するため、実際の親モデル tier を記録に残したい場合は明示が必要(`--execution subagent` のブロックは frontmatter から自己解決するため `--tier` 不要)
|
|
34
|
+
- `--task` は任意引数。同一 gate/role/outcome の記録がタスクごとに繰り返し発生するゲート(D-2.5/D-3 等)では `--task {plan タスクID}` を付与して dedupe キーの粒度を上げる。1 ワークフロー 1 判定のゲート(A-4/B-3/C-2/C-3/D-5/E-1/E-2)は付与不要
|
|
35
|
+
- `--note` は指摘本文を逐語引用せず、シェルメタ文字(引用符・バッククォート・`$` 等)を含まない短い要約で書く(コマンドライン展開事故・シェルインジェクションを避けるため。record_agent_outcome.py 側で長さ上限と秘密情報マスクも適用されるが、そもそも逐語引用しないことが第一防御)
|
|
36
|
+
- 全エラー exit 0 のため呼び出しが失敗してもワークフローは止めない(記録漏れの可能性はあるが後続フェーズはブロックしない)
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
27
40
|
## フェーズ A: ヒアリング
|
|
28
41
|
|
|
29
42
|
`.claude/agents/interviewer.md` を Read してペルソナを採用する。
|
|
30
43
|
|
|
31
44
|
今日のセッションファイルに以下を追記する(未登録の場合のみ):
|
|
32
45
|
- `- [ ] ヒアリング` / `- [ ] 設計` / `- [ ] 計画`
|
|
46
|
+
- `tier-routing複雑度: {ワークフロー開始時に UserPromptSubmit hook が表示した [tier-routing 推奨] の複雑度}`(1 度だけ追記。既にあれば追記しない。以降の全 tier-routing 記録ブロックの `--complexity` はこの行の値を参照する)
|
|
33
47
|
|
|
34
48
|
### A-1〜A-3: 動的ヒアリング(ルーブリック型)
|
|
35
49
|
|
|
@@ -66,8 +80,24 @@ user-invocable: false
|
|
|
66
80
|
|
|
67
81
|
承認後 → セッションファイルの `- [ ] ヒアリング` を `- [x] ヒアリング` に Edit し、`現在地:` を `現在地: フェーズB 設計中` に Edit して**フェーズ B** へ。
|
|
68
82
|
|
|
83
|
+
**tier-routing 結果記録**:
|
|
84
|
+
```bash
|
|
85
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
86
|
+
--role interviewer --outcome success --gate A-4 \
|
|
87
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
88
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
89
|
+
```
|
|
90
|
+
(interviewer を Agent ツールでサブエージェント起動した場合は `--execution subagent` を渡す。その場合 `--tier` は不要)
|
|
91
|
+
|
|
69
92
|
**知識蓄積:**
|
|
70
|
-
-
|
|
93
|
+
- 「否認・修正を依頼する」「否認・自分でファイルを編集する」: `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する
|
|
94
|
+
- **tier-routing 結果記録(否認時)**:
|
|
95
|
+
```bash
|
|
96
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
97
|
+
--role interviewer --outcome failure --gate A-4 \
|
|
98
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
99
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
100
|
+
```
|
|
71
101
|
- 承認かつ非自明なアプローチが有効だった場合: `## うまくいったアプローチ` に追記し `patterns` にも追加する
|
|
72
102
|
|
|
73
103
|
---
|
|
@@ -116,8 +146,24 @@ user-invocable: false
|
|
|
116
146
|
|
|
117
147
|
承認後 → セッションファイルの `- [ ] 設計` を `- [x] 設計` に Edit し、`現在地:` を `現在地: フェーズC 計画中` に Edit して**フェーズ C** へ。
|
|
118
148
|
|
|
149
|
+
**tier-routing 結果記録**:
|
|
150
|
+
```bash
|
|
151
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
152
|
+
--role architect --outcome success --gate B-3 \
|
|
153
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
154
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
155
|
+
```
|
|
156
|
+
(architect を Agent ツールでサブエージェント起動した場合は `--execution subagent` を渡す。その場合 `--tier` は不要)
|
|
157
|
+
|
|
119
158
|
**知識蓄積:**
|
|
120
|
-
-
|
|
159
|
+
- 「否認・修正を依頼する」「否認・自分でファイルを編集する」: `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する
|
|
160
|
+
- **tier-routing 結果記録(否認時)**:
|
|
161
|
+
```bash
|
|
162
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
163
|
+
--role architect --outcome failure --gate B-3 \
|
|
164
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
165
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
166
|
+
```
|
|
121
167
|
- 承認かつ非自明なアプローチが有効だった場合: `## うまくいったアプローチ` に追記し `patterns` にも追加する
|
|
122
168
|
|
|
123
169
|
---
|
|
@@ -181,8 +227,24 @@ plan-report の全タスクを走査し、以下の形式でテキスト出力
|
|
|
181
227
|
|
|
182
228
|
承認後 → セッションファイルの `- [ ] 計画` を `- [x] 計画` に Edit し、`現在地:` を `現在地: フェーズD 実装中` に Edit して**C-3(計画監査ゲート)** へ。
|
|
183
229
|
|
|
230
|
+
**tier-routing 結果記録**:
|
|
231
|
+
```bash
|
|
232
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
233
|
+
--role planner --outcome success --gate C-2 \
|
|
234
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
235
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
236
|
+
```
|
|
237
|
+
(planner を Agent ツールでサブエージェント起動した場合は `--execution subagent` を渡す。その場合 `--tier` は不要)
|
|
238
|
+
|
|
184
239
|
**知識蓄積:**
|
|
185
|
-
-
|
|
240
|
+
- 「否認・修正を依頼する」「否認・自分でファイルを編集する」: `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する
|
|
241
|
+
- **tier-routing 結果記録(否認時)**:
|
|
242
|
+
```bash
|
|
243
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
244
|
+
--role planner --outcome failure --gate C-2 \
|
|
245
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
246
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown}
|
|
247
|
+
```
|
|
186
248
|
- 承認かつ非自明なアプローチが有効だった場合: `## うまくいったアプローチ` に追記し `patterns` にも追加する
|
|
187
249
|
|
|
188
250
|
---
|
|
@@ -289,6 +351,16 @@ design-review-report を Read して findings の有無を確認する。design-
|
|
|
289
351
|
| B設計 が最上流 | フェーズ B | architect(該当設計のみ修正) | B → C → C-3 |
|
|
290
352
|
| C計画 のみ | フェーズ C | planner(該当タスクのみ修正) | C → C-3 |
|
|
291
353
|
|
|
354
|
+
**tier-routing 結果記録**: 上表により層別ルーティングが発動した場合(`[対応予定]` が 1 件以上ある場合)のみ、戻り先の最上流 role へ failure を 1 件記録する(`[許容]` のみで `[対応予定]` が 0 件・findings なしの場合は記録しない):
|
|
355
|
+
```bash
|
|
356
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
357
|
+
--role {interviewer|architect|planner(戻り先 role)} --outcome failure --gate C-3 \
|
|
358
|
+
--execution persona --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
359
|
+
--tier {親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown} \
|
|
360
|
+
--note "{層別ルーティングの起因概要(コード断片の逐語引用禁止)}"
|
|
361
|
+
```
|
|
362
|
+
(戻り先 role を Agent ツールでサブエージェント起動した場合は `--execution subagent` を渡す。その場合 `--tier` は不要)
|
|
363
|
+
|
|
292
364
|
上流フェーズ修正後は下流へ自然に連鎖する(例: B 修正 → C 再計画 → C-2 再承認 → C-3)。各フェーズでも該当 `[対応予定]` の finding のみを反映する。
|
|
293
365
|
|
|
294
366
|
連鎖が C-2 を経て C-3 に戻ったら → ステップ 5(再監査の選択)へ。
|
|
@@ -433,8 +505,23 @@ AskUserQuestion で確認する:
|
|
|
433
505
|
|
|
434
506
|
承認後 → セッションファイルの `- [ ] developer: Green フェーズ` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズD 実装中 / 次: Refactor` に Edit する(**bug-fix モードではこの Edit をスキップする**。D-2 で `- [ ] developer: 修正実装` を既に `[x]` 化済みのため、Green フェーズ行自体がセッションファイルに存在しない)。
|
|
435
507
|
|
|
508
|
+
**tier-routing 結果記録**:
|
|
509
|
+
```bash
|
|
510
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
511
|
+
--role developer --outcome success --gate D-2.5 \
|
|
512
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
513
|
+
--task {plan タスクID}
|
|
514
|
+
```
|
|
515
|
+
|
|
436
516
|
**知識蓄積:**
|
|
437
|
-
-
|
|
517
|
+
- 「否認・再実装を依頼する」「否認・自分でコードを修正する」: `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する
|
|
518
|
+
- **tier-routing 結果記録(否認時)**:
|
|
519
|
+
```bash
|
|
520
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
521
|
+
--role developer --outcome failure --gate D-2.5 \
|
|
522
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
523
|
+
--task {plan タスクID}
|
|
524
|
+
```
|
|
438
525
|
|
|
439
526
|
### D-3: tester(確認)
|
|
440
527
|
|
|
@@ -456,6 +543,14 @@ AskUserQuestion で確認する:
|
|
|
456
543
|
|
|
457
544
|
不合格の場合: D-2(developer)に戻る。合格するまで繰り返す。
|
|
458
545
|
|
|
546
|
+
**tier-routing 結果記録(不合格時のみ・D-2.5 と重複回避のため全合格時は記録しない)**:
|
|
547
|
+
```bash
|
|
548
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
549
|
+
--role developer --outcome failure --gate D-3 \
|
|
550
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
551
|
+
--task {plan タスクID}
|
|
552
|
+
```
|
|
553
|
+
|
|
459
554
|
### D-4: developer(Refactor フェーズ)
|
|
460
555
|
|
|
461
556
|
Agent ツールで `developer` エージェントを起動する。→ テストを壊さずにコードを整理する。
|
|
@@ -482,8 +577,21 @@ AskUserQuestion で確認する:
|
|
|
482
577
|
|
|
483
578
|
承認後 → セッションファイルの `- [ ] tester: 最終確認` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズE レビュー中` に Edit して**フェーズ E** へ。
|
|
484
579
|
|
|
580
|
+
**tier-routing 結果記録**:
|
|
581
|
+
```bash
|
|
582
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
583
|
+
--role tester --outcome success --gate D-5 \
|
|
584
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値}
|
|
585
|
+
```
|
|
586
|
+
|
|
485
587
|
**知識蓄積:**
|
|
486
|
-
-
|
|
588
|
+
- 「否認・修正を依頼する」「否認・自分でコードを修正する」: `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する
|
|
589
|
+
- **tier-routing 結果記録(否認時・欠陥の所在で判定)**: テストコード欠陥は `tester` failure、プロダクトコード欠陥は `developer` failure、両方または判別不能な場合は `developer` のみ記録する:
|
|
590
|
+
```bash
|
|
591
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
592
|
+
--role {tester|developer(欠陥の所在で判定)} --outcome failure --gate D-5 \
|
|
593
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値}
|
|
594
|
+
```
|
|
487
595
|
|
|
488
596
|
---
|
|
489
597
|
|
|
@@ -525,6 +633,13 @@ AskUserQuestion で確認する:
|
|
|
525
633
|
|
|
526
634
|
承認後 → セッションファイルの `- [ ] code-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズE レビュー中 / 次: security-review` に Edit して E-2 へ。
|
|
527
635
|
|
|
636
|
+
**tier-routing 結果記録**:
|
|
637
|
+
```bash
|
|
638
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
639
|
+
--role developer --outcome success --gate E-1 \
|
|
640
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値}
|
|
641
|
+
```
|
|
642
|
+
|
|
528
643
|
**指摘がある場合:**
|
|
529
644
|
指摘一覧をテキストで提示してから AskUserQuestion で方針を確認する:
|
|
530
645
|
```json
|
|
@@ -544,6 +659,16 @@ AskUserQuestion で確認する:
|
|
|
544
659
|
**「全て対応する」の場合:**
|
|
545
660
|
全指摘に `> **[対応予定]**` をマークし、セッションファイルの `- [ ] code-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズC 計画中(レビュー差し戻し)` に Edit してから**フェーズ C** へ(内部遷移・Step 0 なし)。
|
|
546
661
|
|
|
662
|
+
**tier-routing 結果記録(帰属判定)**: 指摘内容から最上流起因 role を判定し failure を記録する(デフォルト developer・迷ったらこれ/設計不備なら architect/計画不備なら planner。`--note` に理由必須。developer は `--execution subagent`、architect/planner は `--execution persona`。architect/planner の場合は `--tier` も明記する):
|
|
663
|
+
```bash
|
|
664
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
665
|
+
--role {developer|architect|planner(帰属判定)} --outcome failure --gate E-1 \
|
|
666
|
+
--execution {developer=subagent / architect・planner=persona} \
|
|
667
|
+
--complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
668
|
+
--tier {developer は省略(frontmatter から自己解決) / architect・planner は親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown} \
|
|
669
|
+
--note "{帰属理由を1行で(コード断片の逐語引用禁止)}"
|
|
670
|
+
```
|
|
671
|
+
|
|
547
672
|
**「対応する指摘を選ぶ」の場合:**
|
|
548
673
|
続けて AskUserQuestion で確認する:
|
|
549
674
|
```json
|
|
@@ -566,6 +691,15 @@ AskUserQuestion で確認する:
|
|
|
566
691
|
```
|
|
567
692
|
4. セッションファイルの `## うまくいったアプローチ` に `[許容例外] {指摘内容} → {許容理由}` の形式で追記し `patterns` に記録する
|
|
568
693
|
5. セッションファイルの `- [ ] code-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズC 計画中(レビュー差し戻し)` に Edit してから**フェーズ C** へ(内部遷移・Step 0 なし)。
|
|
694
|
+
6. **tier-routing 結果記録(帰属判定)**: 指摘内容から最上流起因 role を判定し failure を記録する(デフォルト developer・迷ったらこれ/設計不備なら architect/計画不備なら planner。`--note` に理由必須。developer は `--execution subagent`、architect/planner は `--execution persona`。architect/planner の場合は `--tier` も明記する):
|
|
695
|
+
```bash
|
|
696
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
697
|
+
--role {developer|architect|planner(帰属判定)} --outcome failure --gate E-1 \
|
|
698
|
+
--execution {developer=subagent / architect・planner=persona} \
|
|
699
|
+
--complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
700
|
+
--tier {developer は省略(frontmatter から自己解決) / architect・planner は親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown} \
|
|
701
|
+
--note "{帰属理由を1行で(コード断片の逐語引用禁止)}"
|
|
702
|
+
```
|
|
569
703
|
|
|
570
704
|
**「全て許容して進む」の場合:**
|
|
571
705
|
AskUserQuestion で許容理由を確認する:
|
|
@@ -580,10 +714,17 @@ AskUserQuestion で許容理由を確認する:
|
|
|
580
714
|
2. **review-hint 判断記録**: 全 `[CR-XX-NNN]` 指摘について `record_review_decision.py --decision accepted` で記録する
|
|
581
715
|
3. セッションファイルの `## うまくいったアプローチ` に `[許容例外] {指摘内容} → {許容理由}` の形式で追記し `patterns` に記録する
|
|
582
716
|
4. セッションファイルの `- [ ] code-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズE レビュー中 / 次: security-review` に Edit して E-2 へ。
|
|
717
|
+
5. **tier-routing 結果記録**:
|
|
718
|
+
```bash
|
|
719
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
720
|
+
--role developer --outcome success --gate E-1 \
|
|
721
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値}
|
|
722
|
+
```
|
|
583
723
|
|
|
584
724
|
**「否認・再レビューを依頼する」の場合:**
|
|
585
725
|
追加の AskUserQuestion でフィードバックを確認し再実行する。
|
|
586
726
|
セッションファイルの `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する。
|
|
727
|
+
**tier-routing 結果記録**: なし(否認・再レビュー依頼は記録対象外)。
|
|
587
728
|
|
|
588
729
|
---
|
|
589
730
|
|
|
@@ -620,9 +761,13 @@ AskUserQuestion で確認する:
|
|
|
620
761
|
```
|
|
621
762
|
|
|
622
763
|
承認後 → セッションファイルの `- [ ] security-review` を `- [x]` に Edit し、`現在地:` を `現在地: 完了` に Edit する。続けて **「引き継ぎバックログの照合」**(後述の共通ステップ)を実行してからコミットを提案する。
|
|
623
|
-
|
|
764
|
+
|
|
765
|
+
**tier-routing 結果記録**:
|
|
624
766
|
```bash
|
|
625
|
-
python .claude/skills/dev-workflow/scripts/
|
|
767
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
768
|
+
--role developer --outcome success --gate E-2 \
|
|
769
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
770
|
+
--final
|
|
626
771
|
```
|
|
627
772
|
|
|
628
773
|
**指摘がある場合:**
|
|
@@ -644,6 +789,16 @@ python .claude/skills/dev-workflow/scripts/record_tier_outcome.py --outcome succ
|
|
|
644
789
|
**「全て対応する」の場合:**
|
|
645
790
|
全指摘に `> **[対応予定]**` をマークし、セッションファイルの `- [ ] security-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズC 計画中(レビュー差し戻し)` に Edit してから**フェーズ C** へ(内部遷移・Step 0 なし)。
|
|
646
791
|
|
|
792
|
+
**tier-routing 結果記録(帰属判定)**: 指摘内容から最上流起因 role を判定し failure を記録する(デフォルト developer・迷ったらこれ/設計不備なら architect/計画不備なら planner。`--note` に理由必須。developer は `--execution subagent`、architect/planner は `--execution persona`。architect/planner の場合は `--tier` も明記する):
|
|
793
|
+
```bash
|
|
794
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
795
|
+
--role {developer|architect|planner(帰属判定)} --outcome failure --gate E-2 \
|
|
796
|
+
--execution {developer=subagent / architect・planner=persona} \
|
|
797
|
+
--complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
798
|
+
--tier {developer は省略(frontmatter から自己解決) / architect・planner は親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown} \
|
|
799
|
+
--note "{帰属理由を1行で(コード断片の逐語引用禁止)}"
|
|
800
|
+
```
|
|
801
|
+
|
|
647
802
|
**「対応する指摘を選ぶ」の場合:**
|
|
648
803
|
続けて AskUserQuestion で確認する:
|
|
649
804
|
```json
|
|
@@ -666,6 +821,15 @@ python .claude/skills/dev-workflow/scripts/record_tier_outcome.py --outcome succ
|
|
|
666
821
|
```
|
|
667
822
|
4. セッションファイルの `## うまくいったアプローチ` に `[許容例外] {指摘内容} → {許容理由}` の形式で追記し `patterns` に記録する
|
|
668
823
|
5. セッションファイルの `- [ ] security-review` を `- [x]` に Edit し、`現在地:` を `現在地: フェーズC 計画中(レビュー差し戻し)` に Edit してから**フェーズ C** へ(内部遷移・Step 0 なし)。
|
|
824
|
+
6. **tier-routing 結果記録(帰属判定)**: 指摘内容から最上流起因 role を判定し failure を記録する(デフォルト developer・迷ったらこれ/設計不備なら architect/計画不備なら planner。`--note` に理由必須。developer は `--execution subagent`、architect/planner は `--execution persona`。architect/planner の場合は `--tier` も明記する):
|
|
825
|
+
```bash
|
|
826
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
827
|
+
--role {developer|architect|planner(帰属判定)} --outcome failure --gate E-2 \
|
|
828
|
+
--execution {developer=subagent / architect・planner=persona} \
|
|
829
|
+
--complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
830
|
+
--tier {developer は省略(frontmatter から自己解決) / architect・planner は親モデルのtier名(haiku/sonnet/opus)。判別不能なら unknown} \
|
|
831
|
+
--note "{帰属理由を1行で(コード断片の逐語引用禁止)}"
|
|
832
|
+
```
|
|
669
833
|
|
|
670
834
|
**「全て許容して完了」の場合:**
|
|
671
835
|
AskUserQuestion で許容理由を確認する:
|
|
@@ -682,22 +846,16 @@ AskUserQuestion で許容理由を確認する:
|
|
|
682
846
|
4. セッションファイルの `- [ ] security-review` を `- [x]` に Edit し、`現在地:` を `現在地: 完了` に Edit する。続けて **「引き継ぎバックログの照合」**(後述の共通ステップ)を実行してからコミットを提案する。
|
|
683
847
|
5. **tier-routing 結果記録**: 全許容で完了するのも「成功」としてカウント:
|
|
684
848
|
```bash
|
|
685
|
-
python .claude/skills/dev-workflow/scripts/
|
|
849
|
+
python .claude/skills/dev-workflow/scripts/record_agent_outcome.py \
|
|
850
|
+
--role developer --outcome success --gate E-2 \
|
|
851
|
+
--execution subagent --complexity {セッションファイルの tier-routing複雑度: 行の値} \
|
|
852
|
+
--final
|
|
686
853
|
```
|
|
687
854
|
|
|
688
855
|
**「否認・再診断を依頼する」の場合:**
|
|
689
856
|
追加の AskUserQuestion でフィードバックを確認し再実行する。
|
|
690
857
|
セッションファイルの `## 試みたが失敗したアプローチ` に教訓をルール形式で追記し `patterns` に追加する。
|
|
691
|
-
**tier-routing 結果記録**:
|
|
692
|
-
```bash
|
|
693
|
-
python .claude/skills/dev-workflow/scripts/record_tier_outcome.py --outcome failure
|
|
694
|
-
```
|
|
695
|
-
|
|
696
|
-
**「全て対応する」「対応する指摘を選ぶ」の場合(フェーズ C へ戻る):**
|
|
697
|
-
これらも tier の選択がコスト最適でなかったとみなし、**tier-routing 結果記録**で失敗をカウントしてからフェーズ C へ:
|
|
698
|
-
```bash
|
|
699
|
-
python .claude/skills/dev-workflow/scripts/record_tier_outcome.py --outcome failure
|
|
700
|
-
```
|
|
858
|
+
**tier-routing 結果記録**: なし(否認・再診断依頼は記録対象外)。
|
|
701
859
|
|
|
702
860
|
---
|
|
703
861
|
|