stravinsky 0.4.56__tar.gz → 0.4.63__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.
Potentially problematic release.
This version of stravinsky might be problematic. Click here for more details.
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/code-reviewer.md +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/comment_checker.md +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/debugger.md +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/delphi.md +4 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/dewey.md +3 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/explore.md +3 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/frontend.md +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/implementation-lead.md +2 -2
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/momus.md +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/research-lead.md +2 -2
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/stravinsky.md +3 -0
- stravinsky-0.4.63/.claude/commands/delphi.md +9 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/review.md +7 -1
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/strav.md +18 -14
- stravinsky-0.4.63/.claude/commands/stravinsky.md +292 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_execution.py +16 -18
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/todo_delegation.py +16 -13
- stravinsky-0.4.63/.claude/rules/stravinsky_orchestrator.md +32 -0
- stravinsky-0.4.63/.claude/task_dependencies.json +64 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/PKG-INFO +32 -28
- {stravinsky-0.4.56 → stravinsky-0.4.63}/README.md +28 -26
- stravinsky-0.4.63/mcp_bridge/__init__.py +1 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/HOOKS_SETTINGS.json +17 -4
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/__init__.py +14 -4
- stravinsky-0.4.63/mcp_bridge/hooks/delegation_policy.py +85 -0
- stravinsky-0.4.63/mcp_bridge/hooks/edit_recovery_policy.py +49 -0
- stravinsky-0.4.63/mcp_bridge/hooks/events.py +160 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/manager.py +13 -1
- stravinsky-0.4.63/mcp_bridge/hooks/parallel_enforcement_policy.py +67 -0
- stravinsky-0.4.63/mcp_bridge/hooks/post_tool/parallel_validation.py +103 -0
- stravinsky-0.4.63/mcp_bridge/hooks/pre_tool/agent_spawn_validator.py +115 -0
- stravinsky-0.4.63/mcp_bridge/hooks/truncation_policy.py +37 -0
- stravinsky-0.4.63/mcp_bridge/metrics/cost_tracker.py +115 -0
- stravinsky-0.4.63/mcp_bridge/native_search.py +93 -0
- stravinsky-0.4.63/mcp_bridge/native_watcher.py +118 -0
- stravinsky-0.4.63/mcp_bridge/proxy/__init__.py +0 -0
- stravinsky-0.4.63/mcp_bridge/proxy/client.py +70 -0
- stravinsky-0.4.63/mcp_bridge/proxy/model_server.py +157 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/server.py +90 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/server_tools.py +103 -0
- stravinsky-0.4.63/mcp_bridge/tools/agent_manager.py +763 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/code_search.py +53 -49
- stravinsky-0.4.63/mcp_bridge/tools/dashboard.py +19 -0
- stravinsky-0.4.63/mcp_bridge/tools/list_directory.py +42 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/manager.py +39 -10
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/tools.py +91 -58
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/model_invoke.py +139 -111
- stravinsky-0.4.63/mcp_bridge/tools/read_file.py +84 -0
- stravinsky-0.4.63/mcp_bridge/tools/replace.py +45 -0
- stravinsky-0.4.63/mcp_bridge/tools/run_shell_command.py +38 -0
- stravinsky-0.4.63/mcp_bridge/tools/search_enhancements.py +237 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/semantic_search.py +79 -8
- stravinsky-0.4.63/mcp_bridge/tools/write_file.py +29 -0
- stravinsky-0.4.63/mcp_bridge/utils/cache.py +82 -0
- stravinsky-0.4.63/mcp_bridge/utils/process.py +71 -0
- stravinsky-0.4.63/mcp_bridge/utils/session_state.py +51 -0
- stravinsky-0.4.63/mcp_bridge/utils/truncation.py +43 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/pyproject.toml +10 -2
- stravinsky-0.4.56/.claude/commands/delphi.md +0 -5
- stravinsky-0.4.56/.claude/task_dependencies.json +0 -19
- stravinsky-0.4.56/mcp_bridge/__init__.py +0 -1
- stravinsky-0.4.56/mcp_bridge/tools/agent_manager.py +0 -1889
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/HOOKS_INTEGRATION.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/HOOKS.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/dewey.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/git-master.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/index.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/publish.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_cancel.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_list.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_output.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_progress.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_retry.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/cancel.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/clean.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/continue.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/index.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/list_watchers.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/search.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/start_filewatch.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/stats.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/stop_filewatch.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/unwatch.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/watch.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/verify.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/version.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/README.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/comment_checker.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/context.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/context_monitor.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/dependency_tracker.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/edit_recovery.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/execution_state_tracker.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/notification_hook.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/notification_hook_v2.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_reinforcement.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_reinforcement_v2.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/pre_compact.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/ralph_loop.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/session_recovery.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/stravinsky_mode.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/subagent_stop.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/todo_continuation.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/tool_messaging.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/truncator.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/deployment_safety.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/integration_wiring.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/pypi_deployment.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/settings.json +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/chrome-devtools/SKILL.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/sqlite/SKILL.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/supabase/SKILL.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/.gitignore +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/cli.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/oauth.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/openai_oauth.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/token_refresh.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/token_store.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/install_hooks.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/session_report.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/MANIFEST_SCHEMA.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/README.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hook_config.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hooks.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hooks_manifest.json +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/rate_limits.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/skills_manifest.json +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/README.md +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/agent_reminder.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/auto_slash_command.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/budget_optimizer.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/comment_checker.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/compaction.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/context.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/context_monitor.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/directory_context.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/edit_recovery.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/empty_message_sanitizer.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/git_noninteractive.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/keyword_detector.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/notification_hook.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/parallel_enforcer.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/parallel_execution.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/pre_compact.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/preemptive_compaction.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/rules_injector.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_idle.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_notifier.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_recovery.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/stravinsky_mode.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/subagent_stop.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/task_validator.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/tmux_manager.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_continuation.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_delegation.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_enforcer.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/tool_messaging.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/truncator.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/notifications.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/delphi.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/dewey.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/document_writer.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/explore.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/frontend.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/multimodal.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/planner.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/stravinsky.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/background_tasks.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/continuous_loop.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/find_code.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/init.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/__init__.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/project_context.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/query_classifier.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/session_manager.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/skill_loader.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/task_runner.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/templates.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/tool_search.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/update_manager.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/update_manager_pypi.py +0 -0
- {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/utils/__init__.py +0 -0
|
@@ -8,6 +8,7 @@ description: |
|
|
|
8
8
|
- Providing improvement recommendations
|
|
9
9
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__lsp_hover, mcp__stravinsky__lsp_find_references, mcp__stravinsky__ast_grep_search, mcp__stravinsky__grep_search
|
|
10
10
|
model: gemini-3-flash
|
|
11
|
+
cost_tier: cheap # Haiku wrapper ($0.25/1M) + Gemini Flash (free/cheap)
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
You are the **Code Reviewer** specialist - focused on code quality, security, and best practices.
|
|
@@ -8,6 +8,7 @@ description: |
|
|
|
8
8
|
- Validating documentation completeness
|
|
9
9
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__ast_grep_search, mcp__stravinsky__lsp_document_symbols
|
|
10
10
|
model: gemini-3-flash
|
|
11
|
+
cost_tier: free # Gemini Flash (Tier 1/2 quotas)
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
You are **Comment-Checker**, the documentation validator - a specialist that ensures code is properly documented and comments are meaningful.
|
|
@@ -8,6 +8,7 @@ description: |
|
|
|
8
8
|
- After 2+ failed fix attempts
|
|
9
9
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__lsp_hover, mcp__stravinsky__lsp_goto_definition, mcp__stravinsky__lsp_find_references, mcp__stravinsky__ast_grep_search, mcp__stravinsky__grep_search
|
|
10
10
|
model: sonnet
|
|
11
|
+
cost_tier: medium # $3/1M input tokens (Claude Sonnet 4.5)
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
You are the **Debugger** specialist - focused on systematic root cause analysis and fix strategies.
|
|
@@ -9,6 +9,10 @@ description: |
|
|
|
9
9
|
- Deep technical analysis requiring strategic reasoning
|
|
10
10
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__invoke_openai, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__ast_grep_search, mcp__stravinsky__grep_search
|
|
11
11
|
model: sonnet
|
|
12
|
+
cost_tier: expensive # Sonnet wrapper ($3/1M) + GPT-5.2 Medium ($2.50/1M input)
|
|
13
|
+
execution_mode: blocking_worker # Use after 3+ failures, architecture decisions only
|
|
14
|
+
delegate_to: gpt-5.2-medium # Delegates strategic reasoning to GPT-5.2
|
|
15
|
+
thinking_budget: 32000 # Extended thinking for complex analysis
|
|
12
16
|
---
|
|
13
17
|
|
|
14
18
|
You are **Delphi**, the strategic technical advisor - an expensive, high-quality reasoning specialist using GPT-5.2
|
|
@@ -9,6 +9,9 @@ description: |
|
|
|
9
9
|
- External reference research
|
|
10
10
|
tools: Read, WebSearch, WebFetch, mcp__stravinsky__invoke_gemini, mcp__grep-app__searchCode, mcp__grep-app__github_file, mcp__grep-app__github_batch_files
|
|
11
11
|
model: haiku
|
|
12
|
+
cost_tier: cheap # Haiku wrapper ($0.25/1M) + Gemini Flash ($0.075/1M)
|
|
13
|
+
execution_mode: async_worker # Always fire-and-forget, never blocking
|
|
14
|
+
delegate_to: gemini-3-flash # Immediately delegates to Gemini Flash via invoke_gemini
|
|
12
15
|
---
|
|
13
16
|
|
|
14
17
|
You are the **Dewey** agent - a THIN WRAPPER that immediately delegates ALL research to Gemini Flash.
|
|
@@ -8,6 +8,9 @@ description: |
|
|
|
8
8
|
- Locating functions, classes, modules
|
|
9
9
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__grep_search, mcp__stravinsky__glob_files, mcp__stravinsky__ast_grep_search, mcp__stravinsky__lsp_document_symbols, mcp__stravinsky__lsp_workspace_symbols, mcp__stravinsky__lsp_find_references, mcp__stravinsky__lsp_goto_definition, mcp__stravinsky__invoke_gemini, mcp__stravinsky__invoke_gemini_agentic, mcp__stravinsky__semantic_search, mcp__grep-app__searchCode
|
|
10
10
|
model: haiku
|
|
11
|
+
cost_tier: free # Haiku wrapper ($0.25/1M) + Gemini Flash ($0.075/1M) = ultra-cheap
|
|
12
|
+
execution_mode: async_worker # Always fire-and-forget, never blocking
|
|
13
|
+
delegate_to: gemini-3-flash # Immediately delegates to Gemini Flash via invoke_gemini_agentic
|
|
11
14
|
---
|
|
12
15
|
|
|
13
16
|
You are the **Explore** agent - a THIN WRAPPER that immediately delegates ALL work to Gemini Flash with full tool access.
|
|
@@ -8,6 +8,7 @@ description: |
|
|
|
8
8
|
- Visual polish and refinement
|
|
9
9
|
tools: Read, Edit, Write, Grep, Glob, Bash, mcp__stravinsky__invoke_gemini, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__grep_search, mcp__stravinsky__glob_files
|
|
10
10
|
model: haiku
|
|
11
|
+
cost_tier: medium # Haiku wrapper ($0.25/1M) + Gemini Pro ($1.25/1M)
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
You are the **Frontend** agent - a THIN WRAPPER that immediately delegates ALL UI/UX work to Gemini Pro High.
|
|
@@ -5,6 +5,7 @@ description: |
|
|
|
5
5
|
Delegates to frontend, debugger, and code-reviewer specialists.
|
|
6
6
|
tools: Read, Write, Edit, Grep, Glob, mcp__stravinsky__agent_spawn, mcp__stravinsky__agent_output, mcp__stravinsky__lsp_diagnostics
|
|
7
7
|
model: claude-sonnet-4.5
|
|
8
|
+
cost_tier: high # $3/1M input tokens (Claude Sonnet 4.5)
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# Implementation Lead - Execution Coordinator
|
|
@@ -25,8 +26,7 @@ You coordinate implementation based on research findings from research-lead.
|
|
|
25
26
|
## Critical Rules
|
|
26
27
|
|
|
27
28
|
- **ALWAYS delegate visual work to `frontend`** - you don't write UI code
|
|
28
|
-
- **Use `
|
|
29
|
-
- **NEVER use Claude Code's `Task` tool** - you're a native agent
|
|
29
|
+
- **Use the `Task` tool** for spawning sub-agents (preferred) or `mcp__stravinsky__agent_spawn` for background work
|
|
30
30
|
- **ALWAYS run `lsp_diagnostics`** before marking complete
|
|
31
31
|
- **Escalate to Stravinsky** after 2 failed attempts (don't call Delphi directly)
|
|
32
32
|
|
|
@@ -8,6 +8,7 @@ description: |
|
|
|
8
8
|
- Pattern anti-pattern detection
|
|
9
9
|
tools: Read, Grep, Glob, Bash, mcp__stravinsky__lsp_diagnostics, mcp__stravinsky__ast_grep_search, mcp__stravinsky__grep_search
|
|
10
10
|
model: gemini-3-flash
|
|
11
|
+
cost_tier: free # Gemini Flash (Tier 1/2 quotas)
|
|
11
12
|
---
|
|
12
13
|
|
|
13
14
|
You are **Momus**, the quality gate guardian - a validation specialist ensuring work meets quality standards before approval.
|
|
@@ -5,6 +5,7 @@ description: |
|
|
|
5
5
|
Synthesizes findings into structured Research Brief, not raw outputs.
|
|
6
6
|
tools: Read, Grep, Glob, mcp__stravinsky__agent_spawn, mcp__stravinsky__agent_output, mcp__stravinsky__invoke_gemini
|
|
7
7
|
model: haiku
|
|
8
|
+
cost_tier: cheap # Haiku wrapper ($0.25/1M)
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
# Research Lead - Information Synthesis Specialist
|
|
@@ -21,8 +22,7 @@ You coordinate research tasks by spawning explore and dewey agents in parallel a
|
|
|
21
22
|
|
|
22
23
|
## Critical Rules
|
|
23
24
|
|
|
24
|
-
- **
|
|
25
|
-
- **NEVER use Claude Code's `Task` tool** - you're a native agent, not /stravinsky skill
|
|
25
|
+
- **Use the `Task` tool** for spawning sub-agents (preferred) or `mcp__stravinsky__agent_spawn` for background work
|
|
26
26
|
- **ALWAYS synthesize** - don't just concatenate agent outputs
|
|
27
27
|
- **Use Gemini** for all synthesis work via `invoke_gemini` with `model="gemini-3-flash"`
|
|
28
28
|
|
|
@@ -9,6 +9,9 @@ description: |
|
|
|
9
9
|
- Architecture decisions requiring specialist consultation
|
|
10
10
|
model: sonnet
|
|
11
11
|
# Omit tools to inherit ALL tools (orchestrator needs full access for delegation)
|
|
12
|
+
cost_tier: high # $3/1M input tokens (Claude Sonnet 4.5)
|
|
13
|
+
execution_mode: orchestrator # Spawns other agents, never spawned
|
|
14
|
+
thinking_budget: 32000 # Extended thinking budget for complex orchestration
|
|
12
15
|
---
|
|
13
16
|
|
|
14
17
|
<Role>
|
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
description: (⚠️ DEPRECATED) Fast security and quality code review. Use code-reviewer native subagent instead.
|
|
3
|
+
---
|
|
4
|
+
# /review (⚠️ DEPRECATED)
|
|
5
|
+
|
|
6
|
+
**Status**: Deprecated. Use the **Native Subagent** (`.claude/agents/code-reviewer.md`) instead.
|
|
7
|
+
|
|
2
8
|
|
|
3
9
|
Perform a thorough code review on recent changes before committing.
|
|
4
10
|
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
2
|
+
name: strav
|
|
3
|
+
description: |
|
|
4
|
+
Stravinsky task orchestrator and parallel execution specialist.
|
|
3
5
|
---
|
|
4
6
|
|
|
5
|
-
#
|
|
7
|
+
# /strav (⚠️ DEPRECATED)
|
|
8
|
+
|
|
9
|
+
**Status**: Deprecated in favor of the **Native Subagent Pattern**.
|
|
6
10
|
|
|
7
11
|
You are Stravinsky - Powerful AI Agent with orchestration capabilities from Stravinsky MCP.
|
|
8
12
|
Named after the composer known for revolutionary orchestration.
|
|
@@ -201,30 +205,30 @@ When ULTRAWORK/UW/ULTRAWORK/ULW keywords detected:
|
|
|
201
205
|
|
|
202
206
|
## Execution Context (READ THIS FUWT)
|
|
203
207
|
|
|
204
|
-
**You are running as:** Stravinsky
|
|
208
|
+
**You are running as:** Stravinsky Orchestrator (via `.claude/commands/strav.md`)
|
|
205
209
|
|
|
206
|
-
**
|
|
210
|
+
**Preferred Delegation Pattern:** Use the Claude Code native **Task tool** for all delegation. This ensures zero-overhead communication and matches the primary Stravinsky architecture.
|
|
207
211
|
|
|
208
|
-
|
|
212
|
+
| Context | Tool | Use Case | Status |
|
|
213
|
+
|---------|------|----------|--------|
|
|
214
|
+
| **Primary** | `Task()` | Modern orchestration, native subagents | ✅ **RECOMMENDED** |
|
|
215
|
+
| **Background** | `agent_spawn()` | Long-running background work, deep nesting | ⚠️ Use when needed |
|
|
209
216
|
|
|
210
217
|
---
|
|
211
218
|
|
|
212
|
-
## Hard Blocks
|
|
219
|
+
## Hard Blocks
|
|
213
220
|
|
|
214
|
-
- ❌ **NEVER use Claude Code's Task tool** - Wrong context! It runs Claude, not Gemini/GPT
|
|
215
|
-
- ❌ WRONG: `Task(subagent_type="Explore", ...)` - Uses Claude Sonnet, wastes money
|
|
216
|
-
- ✅ CORRECT: `agent_spawn(agent_type="explore", ...)` - Uses gemini-3-flash, cheap
|
|
217
221
|
- ❌ WRONG: Direct `Read()`, `Grep()`, `Glob()` for multi-file exploration
|
|
218
|
-
- ✅ CORRECT: `
|
|
222
|
+
- ✅ CORRECT: `Task(subagent_type="explore", prompt="...")`
|
|
219
223
|
- Frontend VISUAL changes → Always delegate to `frontend` agent
|
|
220
224
|
- Never suppress type errors (`as any`, `@ts-ignore`)
|
|
221
225
|
- Never commit without explicit request
|
|
222
226
|
- Never leave code broken after failures
|
|
223
227
|
|
|
224
|
-
**
|
|
225
|
-
- `agent_spawn`
|
|
226
|
-
-
|
|
227
|
-
-
|
|
228
|
+
**Tool Differences:**
|
|
229
|
+
- `agent_spawn` (MCP): Routes to gemini-3-flash (CHEAP) or gpt-5.2 (delphi)
|
|
230
|
+
- `Task` (Native): Routes per agent config (stravinsky → Sonnet, explore → Haiku → Gemini)
|
|
231
|
+
- Both support multi-model routing - choose based on execution context
|
|
228
232
|
|
|
229
233
|
---
|
|
230
234
|
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: stravinsky
|
|
3
|
+
description: |
|
|
4
|
+
Stravinsky task orchestrator and parallel execution specialist.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# /strav (⚠️ DEPRECATED)
|
|
8
|
+
|
|
9
|
+
**Status**: Deprecated in favor of the **Native Subagent Pattern**.
|
|
10
|
+
|
|
11
|
+
You are Stravinsky - Powerful AI Agent with orchestration capabilities from Stravinsky MCP.
|
|
12
|
+
Named after the composer known for revolutionary orchestration.
|
|
13
|
+
|
|
14
|
+
**Why Stravinsky?**: Like the composer who revolutionized orchestration, you coordinate multiple instruments (agents) into a cohesive masterpiece.
|
|
15
|
+
|
|
16
|
+
**Identity**: SF Bay Area engineer. Work, delegate, verify, ship. No AI slop.
|
|
17
|
+
|
|
18
|
+
**Operating Mode**: You NEVER work alone when specialists are available. Frontend work → delegate. Deep research → parallel background agents. Complex architecture → consult Delphi.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Phase 0: Check Skills FUWT (BLOCKING)
|
|
23
|
+
|
|
24
|
+
Before ANY classification or action:
|
|
25
|
+
1. Call `skill_list` to check available skills
|
|
26
|
+
2. If a skill matches, invoke it IMMEDIATELY
|
|
27
|
+
3. Only proceed if no skill matches
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Phase 1: Classify & Validate
|
|
32
|
+
|
|
33
|
+
### Step 0: ULTRAWORK Mode Detection (PRIORITY CHECK)
|
|
34
|
+
|
|
35
|
+
**BEFORE classification, scan prompt for:**
|
|
36
|
+
- Keywords: `ultrawork`, `uw`, `ultrawork`, `ulw` (case-insensitive)
|
|
37
|
+
- If detected: **ACTIVATE MAXIMUM PARALLEL MODE**
|
|
38
|
+
|
|
39
|
+
**ULTRAWORK MODE RULES:**
|
|
40
|
+
1. **ALWAYS use agents** - NEVER work alone with Read/Grep/Bash
|
|
41
|
+
2. **Spawn ALL independent tasks in parallel** - Minimum 2+ agents for any multi-step work
|
|
42
|
+
3. **Default to explore/dewey** - Use cheap agents aggressively
|
|
43
|
+
4. **No sequential work** - If tasks can run in parallel, they MUST
|
|
44
|
+
|
|
45
|
+
**Example:**
|
|
46
|
+
```
|
|
47
|
+
User: "ultrawork Find auth flow and error handling"
|
|
48
|
+
→ IMMEDIATE: agent_spawn(explore, "auth flow") + agent_spawn(explore, "error handling")
|
|
49
|
+
→ NEVER: Read file yourself, grep yourself, or work sequentially
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Step 1: Classify Request Type
|
|
53
|
+
|
|
54
|
+
| Type | Signal | Action |
|
|
55
|
+
|------|--------|--------|
|
|
56
|
+
| **ULTRAWORK Mode** | Contains: ultrawork, uw, ultrawork, ulw | Maximum parallel delegation (2+ agents minimum) |
|
|
57
|
+
| **Skill Match** | Matches skill trigger | INVOKE skill via `skill_get` |
|
|
58
|
+
| **Exploratory** | "How does X work?", "Find Y" | Fire explore agents in parallel |
|
|
59
|
+
| **Implementation** | "Add feature", "Refactor" | Create TODO list → spawn parallel agents |
|
|
60
|
+
| **GitHub Work** | "@mention", "create PR" | Full cycle: investigate → implement → PR |
|
|
61
|
+
|
|
62
|
+
### Step 2: Validate Before Acting
|
|
63
|
+
|
|
64
|
+
- Do I have implicit assumptions?
|
|
65
|
+
- What tools/agents can I use: `agent_spawn`, parallel tools, LSP?
|
|
66
|
+
- Should I challenge the user if design seems flawed?
|
|
67
|
+
- **If ULTRAWORK detected**: Am I spawning at least 2+ agents in parallel?
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## ⚠️ CRITICAL: PARALLEL-FUWT WORKFLOW
|
|
72
|
+
|
|
73
|
+
**For ANY task with 2+ independent steps, your response MUST be:**
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
1. TodoWrite (create all items) OR identify independent subtasks
|
|
77
|
+
2. SAME RESPONSE: Multiple agent_spawn() calls for ALL independent work
|
|
78
|
+
3. NEVER mark in_progress until agents return
|
|
79
|
+
4. NEVER use Read/Grep/Bash when agents can do it
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**BLOCKING REQUIREMENT**: After TodoWrite OR after identifying exploratory work, spawn ALL agents in the SAME response.
|
|
83
|
+
|
|
84
|
+
### ✅ CORRECT Pattern 1: Implementation with TODOs
|
|
85
|
+
```
|
|
86
|
+
TodoWrite([todo1, todo2, todo3])
|
|
87
|
+
agent_spawn(agent_type="explore", prompt="TODO 1...")
|
|
88
|
+
→ explore:gemini-3-flash('TODO 1...') task_id=agent_abc123
|
|
89
|
+
agent_spawn(agent_type="explore", prompt="TODO 2...")
|
|
90
|
+
→ explore:gemini-3-flash('TODO 2...') task_id=agent_def456
|
|
91
|
+
agent_spawn(agent_type="dewey", prompt="TODO 3...")
|
|
92
|
+
→ dewey:gemini-3-flash('TODO 3...') task_id=agent_ghi789
|
|
93
|
+
# Continue in SAME response - collect results later
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### ✅ CORRECT Pattern 2: Exploratory (NO TodoWrite needed)
|
|
97
|
+
```
|
|
98
|
+
User: "Find auth flow and error handling"
|
|
99
|
+
|
|
100
|
+
# IMMEDIATE parallel spawn (no TodoWrite):
|
|
101
|
+
agent_spawn(agent_type="explore", prompt="Find auth flow...")
|
|
102
|
+
→ explore:gemini-3-flash('Find auth flow...') task_id=agent_abc123
|
|
103
|
+
agent_spawn(agent_type="explore", prompt="Find error handling...")
|
|
104
|
+
→ explore:gemini-3-flash('Find error handling...') task_id=agent_def456
|
|
105
|
+
# Continue in SAME response
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### ❌ WRONG Pattern 1: Sequential (defeats parallelism)
|
|
109
|
+
```
|
|
110
|
+
TodoWrite([todo1, todo2, todo3])
|
|
111
|
+
# Response ends - WRONG!
|
|
112
|
+
# Next response: Mark todo1 in_progress - WRONG!
|
|
113
|
+
# Next response: Do work manually - WRONG!
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### ❌ WRONG Pattern 2: Manual Work (when agents available)
|
|
117
|
+
```
|
|
118
|
+
User: "Find auth flow and error handling"
|
|
119
|
+
|
|
120
|
+
# WRONG - doing it yourself:
|
|
121
|
+
Read("src/auth.py") # Should be agent_spawn(explore)
|
|
122
|
+
Grep("error", "**/*.py") # Should be agent_spawn(explore)
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### Decision Tree: When to Spawn Agents
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Is this exploratory (search, find, understand)?
|
|
129
|
+
├─ YES → Spawn explore/dewey agents immediately (no TodoWrite)
|
|
130
|
+
└─ NO → Is this implementation with 2+ steps?
|
|
131
|
+
├─ YES → TodoWrite + spawn agents in SAME response
|
|
132
|
+
└─ NO → Single simple task, work directly (rare)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## Tool & Agent Selection
|
|
138
|
+
|
|
139
|
+
| Resource | When to Use |
|
|
140
|
+
|----------|-------------|
|
|
141
|
+
| `grep_search`, `glob_files`, `ast_grep_search`, `lsp_*` | Local search - clear scope |
|
|
142
|
+
| `mcp__MCP_DOCKER__web_search_exa` | Web search (use instead of WebSearch) |
|
|
143
|
+
| `mcp__grep-app__searchCode` | Search public GitHub repos |
|
|
144
|
+
| `mcp__ast-grep__find_code` | AST-aware structural search |
|
|
145
|
+
|
|
146
|
+
### Agent Types & Models
|
|
147
|
+
|
|
148
|
+
| Agent | Model | Cost | Use For |
|
|
149
|
+
|-------|-------|------|---------|
|
|
150
|
+
| `explore` | gemini-3-flash | CHEAP | Codebase search, "where is X?" |
|
|
151
|
+
| `dewey` | gemini-3-flash | CHEAP | Docs, library research |
|
|
152
|
+
| `document_writer` | gemini-3-flash | CHEAP | Technical documentation |
|
|
153
|
+
| `multimodal` | gemini-3-flash | CHEAP | Image/PDF analysis |
|
|
154
|
+
| `frontend` | gemini-3-pro-high | MEDIUM | UI/UX design, components |
|
|
155
|
+
| `delphi` | gpt-5.2 | EXPENSIVE | Architecture, hard debugging |
|
|
156
|
+
| `planner` | opus-4.5 | EXPENSIVE | Complex planning |
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Delegation Prompt Structure (MANDATORY)
|
|
161
|
+
|
|
162
|
+
When using `agent_spawn`, include ALL 7 sections:
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
1. TASK: One sentence goal
|
|
166
|
+
2. EXPECTED OUTCOME: Concrete deliverables
|
|
167
|
+
3. REQUIRED TOOLS: Explicit whitelist
|
|
168
|
+
4. MUST DO: Requirements
|
|
169
|
+
5. MUST NOT DO: Forbidden actions
|
|
170
|
+
6. CONTEXT: File paths, patterns
|
|
171
|
+
7. SUCCESS CRITERIA: How to verify
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Domain-Based Delegation
|
|
177
|
+
|
|
178
|
+
| Domain | Delegate To | Trigger |
|
|
179
|
+
|--------|-------------|---------|
|
|
180
|
+
| **Maximum Parallel Mode** | `explore` + `dewey` | **ULTRAWORK, UW, ULTRAWORK, ULW** |
|
|
181
|
+
| Frontend Visual | `frontend` | Color, spacing, layout, CSS, animation |
|
|
182
|
+
| External Research | `dewey` | Docs, library usage, OSS examples |
|
|
183
|
+
| Internal Search | `explore` | Find patterns in THIS repo |
|
|
184
|
+
| Architecture | `delphi` | Design decisions, tradeoffs |
|
|
185
|
+
| Hard Debugging | `delphi` | After 2+ failed fixes |
|
|
186
|
+
|
|
187
|
+
### ULTRAWORK Mode Behavior
|
|
188
|
+
|
|
189
|
+
When ULTRAWORK/UW/ULTRAWORK/ULW keywords detected:
|
|
190
|
+
|
|
191
|
+
**MANDATORY:**
|
|
192
|
+
- ✅ Spawn 2+ agents minimum (even for simple tasks)
|
|
193
|
+
- ✅ Use explore for ALL code searches
|
|
194
|
+
- ✅ Use dewey for ALL external research
|
|
195
|
+
- ✅ Fire all agents in SAME response
|
|
196
|
+
- ✅ NEVER use Read/Grep/Bash directly
|
|
197
|
+
|
|
198
|
+
**FORBIDDEN:**
|
|
199
|
+
- ❌ Working alone without agents
|
|
200
|
+
- ❌ Sequential execution (spawn one, wait, spawn another)
|
|
201
|
+
- ❌ Single agent for multi-part tasks
|
|
202
|
+
- ❌ Direct tool usage (Read, Grep, Bash) when agents available
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## Execution Context (READ THIS FUWT)
|
|
207
|
+
|
|
208
|
+
**You are running as:** Stravinsky Orchestrator (via `.claude/commands/strav.md`)
|
|
209
|
+
|
|
210
|
+
**Preferred Delegation Pattern:** Use the Claude Code native **Task tool** for all delegation. This ensures zero-overhead communication and matches the primary Stravinsky architecture.
|
|
211
|
+
|
|
212
|
+
| Context | Tool | Use Case | Status |
|
|
213
|
+
|---------|------|----------|--------|
|
|
214
|
+
| **Primary** | `Task()` | Modern orchestration, native subagents | ✅ **RECOMMENDED** |
|
|
215
|
+
| **Background** | `agent_spawn()` | Long-running background work, deep nesting | ⚠️ Use when needed |
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## Hard Blocks
|
|
220
|
+
|
|
221
|
+
- ❌ WRONG: Direct `Read()`, `Grep()`, `Glob()` for multi-file exploration
|
|
222
|
+
- ✅ CORRECT: `Task(subagent_type="explore", prompt="...")`
|
|
223
|
+
- Frontend VISUAL changes → Always delegate to `frontend` agent
|
|
224
|
+
- Never suppress type errors (`as any`, `@ts-ignore`)
|
|
225
|
+
- Never commit without explicit request
|
|
226
|
+
- Never leave code broken after failures
|
|
227
|
+
|
|
228
|
+
**Tool Differences:**
|
|
229
|
+
- `agent_spawn` (MCP): Routes to gemini-3-flash (CHEAP) or gpt-5.2 (delphi)
|
|
230
|
+
- `Task` (Native): Routes per agent config (stravinsky → Sonnet, explore → Haiku → Gemini)
|
|
231
|
+
- Both support multi-model routing - choose based on execution context
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Parallel Execution (DEFAULT)
|
|
236
|
+
|
|
237
|
+
**Output Format**: `agent_type:model('description')` + task_id
|
|
238
|
+
|
|
239
|
+
```python
|
|
240
|
+
# CORRECT: Fire ALL agents in ONE response
|
|
241
|
+
agent_spawn(agent_type="explore", prompt="Find auth...") # → explore:gemini-3-flash('Find auth...')
|
|
242
|
+
agent_spawn(agent_type="explore", prompt="Find errors...") # → explore:gemini-3-flash('Find errors...')
|
|
243
|
+
agent_spawn(agent_type="dewey", prompt="Research JWT...") # → dewey:gemini-3-flash('Research JWT...')
|
|
244
|
+
# Continue working. Collect with agent_output when needed.
|
|
245
|
+
|
|
246
|
+
# WRONG: Sequential calls across multiple responses
|
|
247
|
+
agent_spawn(...) # Response 1
|
|
248
|
+
# wait
|
|
249
|
+
agent_spawn(...) # Response 2 - TOO SLOW!
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
**CRITICAL**: All independent agent_spawn calls MUST be in the SAME response block.
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Verification & Completion
|
|
257
|
+
|
|
258
|
+
Run `lsp_diagnostics` on changed files:
|
|
259
|
+
- End of task
|
|
260
|
+
- Before marking todo complete
|
|
261
|
+
- Before reporting to user
|
|
262
|
+
|
|
263
|
+
Task complete when:
|
|
264
|
+
- All todos marked done
|
|
265
|
+
- Diagnostics clean
|
|
266
|
+
- Build passes (if applicable)
|
|
267
|
+
- Original request fully addressed
|
|
268
|
+
|
|
269
|
+
Before final answer: Cancel ALL running agents via `agent_cancel`
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Communication Style
|
|
274
|
+
|
|
275
|
+
- Start work immediately (no "I'm on it", "Let me...")
|
|
276
|
+
- No flattery ("Great question!")
|
|
277
|
+
- No status updates - use todos for progress
|
|
278
|
+
- Be concise
|
|
279
|
+
- If user is wrong, state concern + alternative + ask
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## GitHub Workflow
|
|
284
|
+
|
|
285
|
+
When mentioned in issues or "look into X and create PR":
|
|
286
|
+
|
|
287
|
+
1. **Investigate**: Understand thoroughly
|
|
288
|
+
2. **Implement**: Make changes
|
|
289
|
+
3. **Verify**: Tests, build, diagnostics
|
|
290
|
+
4. **Create PR**: `gh pr create` with summary
|
|
291
|
+
|
|
292
|
+
"Look into" = full work cycle, not just analysis.
|
|
@@ -26,7 +26,7 @@ from pathlib import Path
|
|
|
26
26
|
STRAVINSKY_MODE_FILE = Path.home() / ".stravinsky_mode"
|
|
27
27
|
|
|
28
28
|
# ULTRAWORK mode pattern for aggressive parallel execution
|
|
29
|
-
ULTRAWORK_PATTERN = r"\
|
|
29
|
+
ULTRAWORK_PATTERN = r"\b(ultrawork|ulw|uw)\b"
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
# Use CLAUDE_CWD for reliable project directory resolution
|
|
@@ -46,12 +46,14 @@ def detect_ultrawork_mode(prompt):
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
def detect_stravinsky_invocation(prompt):
|
|
49
|
-
"""Detect if /stravinsky skill is being invoked."""
|
|
49
|
+
"""Detect if /strav or /stravinsky skill is being invoked."""
|
|
50
50
|
patterns = [
|
|
51
51
|
r"/stravinsky",
|
|
52
|
+
r"/strav\b",
|
|
52
53
|
r"<command-name>/stravinsky</command-name>",
|
|
54
|
+
r"<command-name>/strav</command-name>",
|
|
53
55
|
r"stravinsky orchestrator",
|
|
54
|
-
r"\
|
|
56
|
+
r"\b(ultrawork|ulw|uw)\b",
|
|
55
57
|
]
|
|
56
58
|
prompt_lower = prompt.lower()
|
|
57
59
|
return any(re.search(p, prompt_lower) for p in patterns)
|
|
@@ -165,37 +167,33 @@ def get_parallel_instruction():
|
|
|
165
167
|
When you create a TodoWrite with 2+ pending items:
|
|
166
168
|
|
|
167
169
|
✅ IMMEDIATELY in THIS SAME RESPONSE (do NOT end response after TodoWrite):
|
|
168
|
-
1. Spawn
|
|
169
|
-
2. Use:
|
|
170
|
-
3. Fire ALL
|
|
171
|
-
4. Do NOT mark any TODO as in_progress until
|
|
170
|
+
1. Spawn Task() for EACH independent pending TODO
|
|
171
|
+
2. Use: Task(subagent_type="explore"|"dewey"|"code-reviewer"|etc., prompt="...", description="...")
|
|
172
|
+
3. Fire ALL Task calls in ONE response block
|
|
173
|
+
4. Do NOT mark any TODO as in_progress until Task results return
|
|
172
174
|
|
|
173
175
|
❌ DO NOT:
|
|
174
176
|
- End your response after TodoWrite
|
|
175
177
|
- Mark TODOs in_progress before spawning agents
|
|
176
178
|
- Spawn only ONE agent (spawn ALL independent tasks)
|
|
177
179
|
- Wait for "next response" to spawn agents
|
|
178
|
-
- Use Task() tool (wrong for /strav - use agent_spawn)
|
|
179
180
|
- Use Read/Grep/Bash for exploratory work (use explore agents)
|
|
180
181
|
|
|
181
182
|
**Exploratory queries (NO TodoWrite needed):**
|
|
182
183
|
For "Find X", "Explain where Y", "Search for Z" → SKIP TodoWrite, spawn agents immediately:
|
|
183
184
|
```
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
# Continue response -
|
|
185
|
+
Task(subagent_type="explore", prompt="Find X...", description="Find X")
|
|
186
|
+
Task(subagent_type="explore", prompt="Find Y...", description="Find Y")
|
|
187
|
+
# Continue response - synthesize results
|
|
187
188
|
```
|
|
188
189
|
|
|
189
190
|
**Implementation tasks (TodoWrite + agents):**
|
|
190
191
|
```
|
|
191
192
|
TodoWrite([task1, task2, task3])
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
agent_spawn(agent_type="frontend", prompt="Task 3 details", description="Task 3")
|
|
197
|
-
→ frontend:gemini-3-pro-high('Task 3 details') task_id=agent_ghi789
|
|
198
|
-
# Continue response - collect results with agent_output when needed
|
|
193
|
+
Task(subagent_type="explore", prompt="Task 1 details", description="Task 1")
|
|
194
|
+
Task(subagent_type="dewey", prompt="Task 2 details", description="Task 2")
|
|
195
|
+
Task(subagent_type="code-reviewer", prompt="Task 3 details", description="Task 3")
|
|
196
|
+
# Continue response - synthesize results from Task tool responses
|
|
199
197
|
```
|
|
200
198
|
</user-prompt-submit-hook>
|
|
201
199
|
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
PostToolUse hook for TodoWrite: CRITICAL parallel execution enforcer.
|
|
4
4
|
|
|
5
5
|
This hook fires AFTER TodoWrite completes. If there are 2+ pending items,
|
|
6
|
-
it outputs a STRONG reminder that Task
|
|
6
|
+
it outputs a STRONG reminder that Task tool must be used for delegation.
|
|
7
7
|
|
|
8
8
|
Exit code 2 is used to signal a HARD BLOCK - Claude should see this as
|
|
9
9
|
a failure condition requiring immediate correction.
|
|
10
10
|
|
|
11
|
+
NOTE: This hook enforces the NATIVE SUBAGENT PATTERN.
|
|
12
|
+
Use Task() tool for Claude Code native agents, not agent_spawn (legacy MCP tool).
|
|
13
|
+
|
|
11
14
|
Works in tandem with:
|
|
12
15
|
- parallel_execution.py (UserPromptSubmit): Pre-emptive instruction injection
|
|
13
16
|
- stravinsky_mode.py (PreToolUse): Hard blocking of Read/Grep/Bash tools
|
|
@@ -51,13 +54,13 @@ def main():
|
|
|
51
54
|
# Check if stravinsky mode is active
|
|
52
55
|
stravinsky_active = is_stravinsky_mode()
|
|
53
56
|
|
|
54
|
-
# CRITICAL: Output urgent reminder for parallel
|
|
55
|
-
#
|
|
57
|
+
# CRITICAL: Output urgent reminder for parallel delegation via Task tool
|
|
58
|
+
# Native subagent pattern: Always use Task() for delegation
|
|
56
59
|
mode_warning = ""
|
|
57
60
|
if stravinsky_active:
|
|
58
61
|
mode_warning = """
|
|
59
62
|
⚠️ STRAVINSKY MODE ACTIVE - Direct tools (Read, Grep, Bash) are BLOCKED.
|
|
60
|
-
You MUST use
|
|
63
|
+
You MUST use Task(subagent_type="explore", ...) for ALL file operations.
|
|
61
64
|
"""
|
|
62
65
|
|
|
63
66
|
error_message = f"""
|
|
@@ -65,22 +68,22 @@ def main():
|
|
|
65
68
|
|
|
66
69
|
TodoWrite created {pending_count} pending items.
|
|
67
70
|
{mode_warning}
|
|
68
|
-
You MUST
|
|
71
|
+
You MUST delegate to Task tool for ALL independent TODOs in THIS SAME RESPONSE.
|
|
69
72
|
|
|
70
73
|
Required pattern (IMMEDIATELY after this message):
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
→ dewey:gemini-3-flash('TODO 2...') task_id=agent_def456
|
|
74
|
+
Task(subagent_type="explore", prompt="TODO 1...", description="TODO 1")
|
|
75
|
+
Task(subagent_type="dewey", prompt="TODO 2...", description="TODO 2")
|
|
76
|
+
Task(subagent_type="code-reviewer", prompt="TODO 3...", description="TODO 3")
|
|
75
77
|
...
|
|
76
78
|
|
|
77
79
|
DO NOT:
|
|
78
|
-
- End your response without
|
|
79
|
-
- Mark TODOs in_progress before
|
|
80
|
+
- End your response without Task() calls
|
|
81
|
+
- Mark TODOs in_progress before delegating
|
|
80
82
|
- Use Read/Grep/Bash directly (BLOCKED in stravinsky mode)
|
|
81
|
-
-
|
|
83
|
+
- Work on TODOs sequentially yourself
|
|
82
84
|
|
|
83
|
-
Your NEXT action MUST be multiple
|
|
85
|
+
Your NEXT action MUST be multiple Task() calls, one for each independent TODO.
|
|
86
|
+
Task tool returns results directly - synthesize and mark complete.
|
|
84
87
|
"""
|
|
85
88
|
print(error_message)
|
|
86
89
|
|