-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Problem
Orchestrator mode is designed to enforce delegation to subagents to save context, but Skills can be invoked directly without going through the delegation layer, bypassing this enforcement.
What Happened
In a recent session, the orchestrator invoked a skill directly:
Skill(skill="frontend-design:frontend-design", args="...")This caused the orchestrator to:
- Receive skill guidance in the main context
- Execute all the work directly (file reads, writes)
- Consume ~6,000 tokens of orchestrator context
Expected Behavior
The orchestrator should have delegated to a subagent:
Task(
subagent_type="general-purpose",
prompt="Use the frontend-design skill to redesign pages..."
)This would use ~200 tokens instead (30x savings).
Root Cause
Skills execute in the main conversation context rather than spawning subagents. The orchestrator directives say to delegate everything, but skills provide an escape hatch that bypasses this rule.
Impact
- Defeats the purpose of orchestrator mode (context efficiency)
- Creates inconsistent behavior (some work delegated, some not)
- Easy to accidentally bypass delegation without realizing it
Suggested Solutions
Option 1: Block Skills in Orchestrator Mode
- When
orchestrator: strictis enabled, block Skill tool usage - Force all work to go through Task delegation
- Show error: "Skills not allowed in orchestrator mode. Use Task to delegate."
Option 2: Auto-Delegate Skills
- When a Skill is invoked in orchestrator mode, automatically wrap it in a Task
- Spawn a subagent that uses the skill
- Transparent to the user
Option 3: Warning System
- Allow skills but show a prominent warning in PostToolUse hook
- "
⚠️ ORCHESTRATOR: Skill invoked directly. Consider delegating via Task." - Helps train better delegation habits
Reproduction
- Enable orchestrator mode:
htmlgraph orchestrator enable - Invoke any skill:
Skill(skill="some-skill") - Observe: Work executes in main context instead of delegating
Additional Context
The orchestrator directives explicitly state to delegate everything except:
- Task() - delegation itself
- AskUserQuestion() - user interaction
- TodoWrite() - tracking
- SDK operations - feature management
Skills should either be added to this exception list (with justification) or should be enforced to go through Task delegation.
Session Evidence
Session where this occurred: FocusShield development, frontend UI polish
- Skill invoked: frontend-design:frontend-design
- Context used: ~6,000 tokens
- Should have been: ~200 tokens (via Task delegation)
Metadata
- Orchestrator level: strict
- Session: 2026-01-03
- Reporter: User caught the violation