DevHive-Cli delegation
Delegate tasks to specialized subagents. Use subagent for synchronous task execution, startAsyncSubagent for background task execution, messageSubagent for async follow-ups, or messageSubagentAndGetResponse for sync follow-ups.
git clone https://github.com/El3tar-cmd/DevHive-Cli
T=$(mktemp -d) && git clone --depth=1 https://github.com/El3tar-cmd/DevHive-Cli "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/delegation" ~/.claude/skills/el3tar-cmd-devhive-cli-delegation && rm -rf "$T"
skills/delegation/SKILL.mdDelegation Skill
Delegate tasks to specialized subagents for autonomous execution.
When to Use
Use this skill when:
- You need to delegate tasks to run autonomously (especially when you have a session plan)
- You have multiple independent tasks that can run in parallel
When NOT to Use
- Simple tasks that you can complete directly
- Tasks that require immediate user interaction
- Read-only operations (use grep/glob/read tools instead)
- Quick file edits (use edit tool directly)
- Analysis, planning, or debugging (e.g. performing code review)
Available Functions
subagent(task, fromPlan, relevantFiles, relevantSkills)
Launch a subagent to handle a task synchronously. Blocks until the subagent completes and returns the result.
Parameters:
(str, required): Task ID from session plan (e.g., "T003") OR brief task descriptiontask
(bool, default False): If True, subagent reads full task context from .local/session_plan.mdfromPlan
(list[str], optional): File paths the subagent should accessrelevantFiles
(list[str], optional): Paths to all implementation skills you've read. Use the full path from the skills view. Pass every skill with integration details (auth, storage, payments) — not orchestration skills meant for you (design, delegation, react-vite).relevantSkills
(str, default "GENERAL"): "GENERAL" or "SMALL_TASK" for quick tasksspecialization
Returns: Dict with task results
{ "success": true, "message": "Task summary", "subagentAlias": "subagent_1", "result": "Full task output..." }
Usage Patterns:
1. From Plan (Recommended when you have a session plan):
// Reference tasks by ID - subagent reads full context from .local/session_plan.md const result = await subagent({ task: "T003", fromPlan: true }); console.log(result); // Always print the result
2. Direct Task (for ad-hoc tasks without a plan):
const result = await subagent({ task: "Fix the auth bug in src/auth.ts", relevantFiles: ["src/auth.ts"], relevantSkills: [".local/skills/clerk-auth/SKILL.md", ".local/skills/database/SKILL.md"] }); console.log(result); // Always print the result
startAsyncSubagent(task, fromPlan, relevantFiles, relevantSkills)
Launch a subagent to handle a task asynchronously in the background. Returns immediately without waiting for completion. Use
waitForBackgroundTasks to collect results later.
Parameters:
(str, required): Task ID from session plan (e.g., "T003") OR brief task descriptiontask
(bool, default False): If True, subagent reads full task context from .local/session_plan.mdfromPlan
(list[str], optional): File paths the subagent should accessrelevantFiles
(list[str], optional): Paths to all implementation skills you've read. Use the full path from the skills view. Pass every skill with integration details (auth, storage, payments) — not orchestration skills meant for you (design, delegation, react-vite).relevantSkills
(str, default "GENERAL"): "GENERAL" or "SMALL_TASK" for quick tasksspecialization
Returns: Immediately with acknowledgment. Results come via
waitForBackgroundTasks.
Usage Patterns:
1. From Plan (Recommended when you have a session plan):
// Reference tasks by ID - no print needed, result comes via wait_for_background_tasks await startAsyncSubagent({ task: "T003", fromPlan: true });
2. Direct Task (for ad-hoc tasks without a plan):
await startAsyncSubagent({ task: "Fix the auth bug in src/auth.ts", relevantFiles: ["src/auth.ts"], relevantSkills: [".local/skills/clerk-auth/SKILL.md", ".local/skills/database/SKILL.md"] });
Parallel Execution:
// Launch independent tasks simultaneously console.log(await startAsyncSubagent({ task: "T002", fromPlan: true })); console.log(await startAsyncSubagent({ task: "T003", fromPlan: true })); console.log(await startAsyncSubagent({ task: "T004", fromPlan: true }));
Giving Subagents Access to Skills:
// Pass skill paths from the skills view await startAsyncSubagent({ task: "T005", fromPlan: true, relevantSkills: [".local/skills/database/SKILL.md", ".local/skills/clerk-auth/SKILL.md"] });
messageSubagent(subagentId, message)
Send a follow-up message to an existing subagent asynchronously. Returns immediately after the message is delivered. Use this when the subagent should continue in the background.
Parameters:
(str, required): Alias returned when the subagent was startedsubagentId
(str, required): Follow-up instruction or clarification for the subagentmessage
Returns: Acknowledgment that the message was sent. The subagent keeps running in the background.
Example:
// Async follow-up: continue background work await messageSubagent({ subagentId: "subagent-happy-tiger", message: "After the fix, add regression tests for the auth edge case." }); // Collect results later await waitForBackgroundTasks();
messageSubagentAndGetResponse(subagentId, message, timeoutSeconds)
Send a follow-up message to an existing subagent synchronously. Blocks until the subagent completes, times out, or is interrupted.
Parameters:
(str, required): Alias returned when the subagent was startedsubagentId
(str, required): Follow-up instruction or clarification for the subagentmessage
(float, default 300.0): Max time to wait before returning a timeout statustimeoutSeconds
Returns: Dict with
success, message, result, and exitReason.
Example:
// Sync follow-up: wait for the answer now const result = await messageSubagentAndGetResponse({ subagentId: "subagent-happy-tiger", message: "Summarize root cause and include exact changed files.", timeoutSeconds: 180.0 }); console.log(result.result);
When to choose which:
- Use
when you want fire-and-forget behaviormessageSubagent - Use
when you need the response immediatelymessageSubagentAndGetResponse
Best Practices
- Use session plans: For 2+ tasks, create a .local/session_plan.md and use
fromPlan=True - Launch in parallel: Independent tasks can run simultaneously with
startAsyncSubagent - Use
when you need the result immediately: For tasks where you need to act on the output, use the synchronoussubagent()
and print the result.subagent() - Use
for independent tasks that can run in the background: The tasks will be performed in parallel.startAsyncSubagent() - Use
for async follow-ups: Message running subagents without blocking and collect results withmessageSubagent()waitForBackgroundTasks - Use
for sync follow-ups: Use this when you need the subagent's output before continuingmessageSubagentAndGetResponse() - Trust the results: Subagent outputs should generally be trusted
- Pass all implementation skills via relevantSkills: Include every implementation skill you've read — use the full path from the skills view for each one
Subagent Capabilities
The subagent has access to:
- File operations (read, write, edit, glob, grep)
- Bash commands
- LSP diagnostics
- Depending on specialization, additional tools like media generation or canvas tools may be available
- Skills (loaded via
parameter)relevantSkills
The subagent does NOT:
- Run or restart workflows
- Preview/test the app (that's your job as main agent)