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.

Files changed (187) hide show
  1. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/code-reviewer.md +1 -0
  2. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/comment_checker.md +1 -0
  3. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/debugger.md +1 -0
  4. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/delphi.md +4 -0
  5. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/dewey.md +3 -0
  6. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/explore.md +3 -0
  7. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/frontend.md +1 -0
  8. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/implementation-lead.md +2 -2
  9. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/momus.md +1 -0
  10. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/research-lead.md +2 -2
  11. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/stravinsky.md +3 -0
  12. stravinsky-0.4.63/.claude/commands/delphi.md +9 -0
  13. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/review.md +7 -1
  14. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/strav.md +18 -14
  15. stravinsky-0.4.63/.claude/commands/stravinsky.md +292 -0
  16. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_execution.py +16 -18
  17. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/todo_delegation.py +16 -13
  18. stravinsky-0.4.63/.claude/rules/stravinsky_orchestrator.md +32 -0
  19. stravinsky-0.4.63/.claude/task_dependencies.json +64 -0
  20. {stravinsky-0.4.56 → stravinsky-0.4.63}/PKG-INFO +32 -28
  21. {stravinsky-0.4.56 → stravinsky-0.4.63}/README.md +28 -26
  22. stravinsky-0.4.63/mcp_bridge/__init__.py +1 -0
  23. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/HOOKS_SETTINGS.json +17 -4
  24. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/__init__.py +14 -4
  25. stravinsky-0.4.63/mcp_bridge/hooks/delegation_policy.py +85 -0
  26. stravinsky-0.4.63/mcp_bridge/hooks/edit_recovery_policy.py +49 -0
  27. stravinsky-0.4.63/mcp_bridge/hooks/events.py +160 -0
  28. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/manager.py +13 -1
  29. stravinsky-0.4.63/mcp_bridge/hooks/parallel_enforcement_policy.py +67 -0
  30. stravinsky-0.4.63/mcp_bridge/hooks/post_tool/parallel_validation.py +103 -0
  31. stravinsky-0.4.63/mcp_bridge/hooks/pre_tool/agent_spawn_validator.py +115 -0
  32. stravinsky-0.4.63/mcp_bridge/hooks/truncation_policy.py +37 -0
  33. stravinsky-0.4.63/mcp_bridge/metrics/cost_tracker.py +115 -0
  34. stravinsky-0.4.63/mcp_bridge/native_search.py +93 -0
  35. stravinsky-0.4.63/mcp_bridge/native_watcher.py +118 -0
  36. stravinsky-0.4.63/mcp_bridge/proxy/__init__.py +0 -0
  37. stravinsky-0.4.63/mcp_bridge/proxy/client.py +70 -0
  38. stravinsky-0.4.63/mcp_bridge/proxy/model_server.py +157 -0
  39. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/server.py +90 -0
  40. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/server_tools.py +103 -0
  41. stravinsky-0.4.63/mcp_bridge/tools/agent_manager.py +763 -0
  42. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/code_search.py +53 -49
  43. stravinsky-0.4.63/mcp_bridge/tools/dashboard.py +19 -0
  44. stravinsky-0.4.63/mcp_bridge/tools/list_directory.py +42 -0
  45. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/manager.py +39 -10
  46. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/tools.py +91 -58
  47. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/model_invoke.py +139 -111
  48. stravinsky-0.4.63/mcp_bridge/tools/read_file.py +84 -0
  49. stravinsky-0.4.63/mcp_bridge/tools/replace.py +45 -0
  50. stravinsky-0.4.63/mcp_bridge/tools/run_shell_command.py +38 -0
  51. stravinsky-0.4.63/mcp_bridge/tools/search_enhancements.py +237 -0
  52. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/semantic_search.py +79 -8
  53. stravinsky-0.4.63/mcp_bridge/tools/write_file.py +29 -0
  54. stravinsky-0.4.63/mcp_bridge/utils/cache.py +82 -0
  55. stravinsky-0.4.63/mcp_bridge/utils/process.py +71 -0
  56. stravinsky-0.4.63/mcp_bridge/utils/session_state.py +51 -0
  57. stravinsky-0.4.63/mcp_bridge/utils/truncation.py +43 -0
  58. {stravinsky-0.4.56 → stravinsky-0.4.63}/pyproject.toml +10 -2
  59. stravinsky-0.4.56/.claude/commands/delphi.md +0 -5
  60. stravinsky-0.4.56/.claude/task_dependencies.json +0 -19
  61. stravinsky-0.4.56/mcp_bridge/__init__.py +0 -1
  62. stravinsky-0.4.56/mcp_bridge/tools/agent_manager.py +0 -1889
  63. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/HOOKS_INTEGRATION.md +0 -0
  64. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/agents/HOOKS.md +0 -0
  65. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/dewey.md +0 -0
  66. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/git-master.md +0 -0
  67. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/index.md +0 -0
  68. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/publish.md +0 -0
  69. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_cancel.md +0 -0
  70. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_list.md +0 -0
  71. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_output.md +0 -0
  72. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_progress.md +0 -0
  73. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/agent_retry.md +0 -0
  74. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/cancel.md +0 -0
  75. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/clean.md +0 -0
  76. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/continue.md +0 -0
  77. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/index.md +0 -0
  78. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/list_watchers.md +0 -0
  79. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/search.md +0 -0
  80. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/start_filewatch.md +0 -0
  81. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/stats.md +0 -0
  82. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/stop_filewatch.md +0 -0
  83. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/unwatch.md +0 -0
  84. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/str/watch.md +0 -0
  85. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/verify.md +0 -0
  86. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/commands/version.md +0 -0
  87. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/README.md +0 -0
  88. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/comment_checker.py +0 -0
  89. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/context.py +0 -0
  90. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/context_monitor.py +0 -0
  91. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/dependency_tracker.py +0 -0
  92. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/edit_recovery.py +0 -0
  93. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/execution_state_tracker.py +0 -0
  94. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/notification_hook.py +0 -0
  95. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/notification_hook_v2.py +0 -0
  96. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_reinforcement.py +0 -0
  97. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/parallel_reinforcement_v2.py +0 -0
  98. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/pre_compact.py +0 -0
  99. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/ralph_loop.py +0 -0
  100. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/session_recovery.py +0 -0
  101. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/stravinsky_mode.py +0 -0
  102. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/subagent_stop.py +0 -0
  103. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/todo_continuation.py +0 -0
  104. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/tool_messaging.py +0 -0
  105. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/hooks/truncator.py +0 -0
  106. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/deployment_safety.md +0 -0
  107. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/integration_wiring.md +0 -0
  108. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/rules/pypi_deployment.md +0 -0
  109. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/settings.json +0 -0
  110. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/chrome-devtools/SKILL.md +0 -0
  111. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/sqlite/SKILL.md +0 -0
  112. {stravinsky-0.4.56 → stravinsky-0.4.63}/.claude/skills/supabase/SKILL.md +0 -0
  113. {stravinsky-0.4.56 → stravinsky-0.4.63}/.gitignore +0 -0
  114. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/__init__.py +0 -0
  115. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/cli.py +0 -0
  116. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/oauth.py +0 -0
  117. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/openai_oauth.py +0 -0
  118. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/token_refresh.py +0 -0
  119. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/auth/token_store.py +0 -0
  120. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/__init__.py +0 -0
  121. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/install_hooks.py +0 -0
  122. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/cli/session_report.py +0 -0
  123. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/MANIFEST_SCHEMA.md +0 -0
  124. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/README.md +0 -0
  125. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/__init__.py +0 -0
  126. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hook_config.py +0 -0
  127. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hooks.py +0 -0
  128. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/hooks_manifest.json +0 -0
  129. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/rate_limits.py +0 -0
  130. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/config/skills_manifest.json +0 -0
  131. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/README.md +0 -0
  132. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/agent_reminder.py +0 -0
  133. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/auto_slash_command.py +0 -0
  134. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/budget_optimizer.py +0 -0
  135. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/comment_checker.py +0 -0
  136. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/compaction.py +0 -0
  137. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/context.py +0 -0
  138. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/context_monitor.py +0 -0
  139. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/directory_context.py +0 -0
  140. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/edit_recovery.py +0 -0
  141. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/empty_message_sanitizer.py +0 -0
  142. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/git_noninteractive.py +0 -0
  143. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/keyword_detector.py +0 -0
  144. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/notification_hook.py +0 -0
  145. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/parallel_enforcer.py +0 -0
  146. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/parallel_execution.py +0 -0
  147. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/pre_compact.py +0 -0
  148. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/preemptive_compaction.py +0 -0
  149. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/rules_injector.py +0 -0
  150. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_idle.py +0 -0
  151. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_notifier.py +0 -0
  152. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/session_recovery.py +0 -0
  153. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/stravinsky_mode.py +0 -0
  154. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/subagent_stop.py +0 -0
  155. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/task_validator.py +0 -0
  156. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/tmux_manager.py +0 -0
  157. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_continuation.py +0 -0
  158. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_delegation.py +0 -0
  159. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/todo_enforcer.py +0 -0
  160. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/tool_messaging.py +0 -0
  161. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/hooks/truncator.py +0 -0
  162. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/notifications.py +0 -0
  163. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/__init__.py +0 -0
  164. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/delphi.py +0 -0
  165. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/dewey.py +0 -0
  166. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/document_writer.py +0 -0
  167. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/explore.py +0 -0
  168. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/frontend.py +0 -0
  169. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/multimodal.py +0 -0
  170. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/planner.py +0 -0
  171. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/prompts/stravinsky.py +0 -0
  172. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/__init__.py +0 -0
  173. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/background_tasks.py +0 -0
  174. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/continuous_loop.py +0 -0
  175. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/find_code.py +0 -0
  176. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/init.py +0 -0
  177. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/lsp/__init__.py +0 -0
  178. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/project_context.py +0 -0
  179. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/query_classifier.py +0 -0
  180. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/session_manager.py +0 -0
  181. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/skill_loader.py +0 -0
  182. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/task_runner.py +0 -0
  183. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/templates.py +0 -0
  184. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/tools/tool_search.py +0 -0
  185. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/update_manager.py +0 -0
  186. {stravinsky-0.4.56 → stravinsky-0.4.63}/mcp_bridge/update_manager_pypi.py +0 -0
  187. {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 `mcp__stravinsky__agent_spawn`** for spawning sub-agents
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
- - **ALWAYS use `mcp__stravinsky__agent_spawn`** for spawning sub-agents
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>
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: delphi
3
+ description: |
4
+ (⚠️ DEPRECATED) Strategic advisor. Use Delphi native subagent instead.
5
+ ---
6
+
7
+ # /delphi (⚠️ DEPRECATED)
8
+
9
+ **Status**: Deprecated. The Delphi agent is now available as a **Native Subagent** (`.claude/agents/delphi.md`).
@@ -1,4 +1,10 @@
1
- # Review - Code Review Recent Changes
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
- description: /strav - Stravinsky Orchestrator - Relentless parallel agent execution for complex workflows.
2
+ name: strav
3
+ description: |
4
+ Stravinsky task orchestrator and parallel execution specialist.
3
5
  ---
4
6
 
5
- # Stravinsky Orchestrator
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 MCP Skill (via `/strav` command)
208
+ **You are running as:** Stravinsky Orchestrator (via `.claude/commands/strav.md`)
205
209
 
206
- **This means:** You use Stravinsky MCP tools (`agent_spawn`, `invoke_gemini`, etc.)
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
- **Different context:** If you were running as a Claude Code native subagent (`.claude/agents/`), you would use `Task` tool instead. That's a DIFFERENT execution environment.
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 (NEVER violate in THIS context)
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: `agent_spawn(agent_type="explore", prompt="...")`
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
- **WHY agent_spawn over Task?**
225
- - `agent_spawn` routes to gemini-3-flash (CHEAP) or gpt-5.2 (for delphi)
226
- - Claude's `Task` tool runs Claude models (EXPENSIVE)
227
- - Multi-model routing is the whole point of Stravinsky
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"\bultrawork\b"
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"\bultrawork\b",
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 agent_spawn() for EACH independent pending TODO
169
- 2. Use: agent_spawn(agent_type="explore"|"dewey"|"frontend"|etc., prompt="...", description="...")
170
- 3. Fire ALL agent_spawn calls in ONE response block
171
- 4. Do NOT mark any TODO as in_progress until agents return
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
- agent_spawn(agent_type="explore", prompt="Find X...", description="Find X")
185
- agent_spawn(agent_type="explore", prompt="Find Y...", description="Find Y")
186
- # Continue response - collect with agent_output
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
- agent_spawn(agent_type="explore", prompt="Task 1 details", description="Task 1")
193
- explore:gemini-3-flash('Task 1 details') task_id=agent_abc123
194
- agent_spawn(agent_type="dewey", prompt="Task 2 details", description="Task 2")
195
- dewey:gemini-3-flash('Task 2 details') task_id=agent_def456
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 agents must be spawned immediately.
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 agent spawning
55
- # Use agent_spawn for /strav (MCP skill), Task for native subagents
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 agent_spawn(agent_type="explore", ...) for ALL file operations.
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 spawn agents for ALL independent TODOs in THIS SAME RESPONSE.
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
- agent_spawn(agent_type="explore", prompt="TODO 1...", description="TODO 1")
72
- explore:gemini-3-flash('TODO 1...') task_id=agent_abc123
73
- agent_spawn(agent_type="dewey", prompt="TODO 2...", description="TODO 2")
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 spawning agents
79
- - Mark TODOs in_progress before spawning agents
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
- - Use Task() tool (wrong for /strav - use agent_spawn)
83
+ - Work on TODOs sequentially yourself
82
84
 
83
- Your NEXT action MUST be multiple agent_spawn() calls, one for each independent TODO.
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