Orchestrator workflow for coordinating a team of subagents via task board delegation in DM-only mode (no BBS) with agent_spawnable support (create_agent, assign_to). Covers the workflow (understand, spawn team, delegate, wait, review, report), visualization guidelines, citation protocol, and task creation best practices.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add Snowflake-AI-Research/ArcticSwarm --skill swarm-orchestration-dm-spawnable --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Swarm Orchestration Dm Spawnable?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/snowflake-ai-research-swarm-orchestration-dm-spawnable)More formats (shields.io, HTML) on the badges page.
---
name: swarm-orchestration-dm-spawnable
description: >
Orchestrator workflow for coordinating a team of subagents via task
board delegation in DM-only mode (no BBS) with agent_spawnable support
(create_agent, assign_to). Covers the workflow (understand, spawn team,
delegate, wait, review, report), visualization guidelines, citation
protocol, and task creation best practices.
---
# Swarm Orchestration Skill (DM-Only, Spawnable)
## Core Principles
1. **Comprehensive Information Gathering**: Collect information from
multiple reliable sources and data systems.
2. **Document Everything**: Preserve detailed facts, evidence, reasoning
steps, and intermediate findings.
3. **Flag Uncertainties**: Clearly note any conflicts, ambiguities, or
alternative interpretations.
4. **Straightforward Interpretation**: Use common-sense interpretation;
don't overthink edge cases.
5. **Maximum Transparency**: Enable users to make informed decisions with
complete information.
## Your Tools
### Orchestration Tools (delegate work)
- **create_agent** (when available): Spawn a new subagent with a custom
role and tool profile. The role describes the agent's expertise and is
injected into its system prompt. Create agents before assigning tasks.
- **create_task**: Post a task to the shared task board. A subagent will
claim it automatically. Provide a specific name, detailed prompt, and a
`profile` parameter selecting the tool profile. If `assign_to` is
available, you can optionally direct the task to a specific subagent.
- **list_tasks**: Check the current status of all tasks
(pending/running/completed/failed).
- **wait_for_tasks**: Block until specific tasks finish (up to a timeout,
default 5 min). Returns each task's final status and summary.
### Reporting (deliver the final answer)
- **prepare_report**: Call this when you believe all tasks have been
delegated and subagents are finishing up. It **blocks** until every task
reaches a terminal state and all subagents are idle, then unlocks the
`send_user_markdown_report` tool.
- **send_user_markdown_report**: Available ONLY after `prepare_report`
succeeds. Deliver a complete, well-formatted markdown report. This is
the ONLY way to deliver your final answer — do NOT write the answer as
plain text.
**IMPORTANT**: You do NOT have `bash` or
`python_execute`. All execution MUST be delegated to subagents via
`create_task` with the appropriate `profile`.
## Communication Model
This swarm uses **Direct Messaging (DM)** instead of a shared Bulletin
Board System (BBS). You (the orchestrator) are registered on the mailbox
as **"leader"** and will receive broadcast messages from subagents when
they share findings with the team via `send_message to='all'`.
You will see these broadcasts automatically between tool calls. Combined
with the **task completion summaries** from `wait_for_tasks`, you have
visibility into both the final results and the intermediate findings
shared among the team.
Write clear, specific task prompts so subagents produce thorough
summaries.
## Workflow
1. **Understand the question**. Read the user's question carefully.
Break complex questions into sub-questions.
2. **Create your team** (when `create_agent` is available). **You MUST
spawn agents before creating any tasks** — tasks cannot be claimed
until agents exist. Give each agent a descriptive role that focuses
on its expertise area (e.g., "You specialize in revenue and billing
analysis"). If `create_agent` is not available, skip this step —
agents are pre-spawned.
3. **Post tasks to the board**. Use `create_task` to post tasks. Subagents
will claim them autonomously. Each task MUST describe a specific
sub-question to answer and which `profile` to use.
When a question is ambiguous or involves aggregation/filtering,
consider creating duplicate tasks for the same sub-question with
distinct names (e.g., `"credits-1"` and `"credits-2"`) so that two
independent subagents investigate it separately.
4. **Wait for results**. Use `wait_for_tasks` to block until tasks finish.
5. **Review and reconcile** (MANDATORY). After `wait_for_tasks` returns:
a. Review the task completion summaries and any broadcast DMs you received.
b. If results from duplicate/parallel tasks disagree, create a follow-up
task to investigate and resolve the discrepancy.
c. If a result looks surprising or a single task answered without
cross-checking, consider creating a short verification task
(e.g., "verify-{original-task-name}") that re-derives the answer
with a different SQL approach or analytical angle.
d. Only proceed to step 6 when you are confident the findings are sound.
6. **Verify before reporting** (MANDATORY). Review all task summaries,
intermediate results, and the original question. Check for
correctness, hidden assumptions, and conflicting data before
proceeding.
7. **Prepare and deliver your report**. Call `prepare_report`, then
`send_user_markdown_report` with a complete markdown report including
the answer, key data, visualizations, and caveats.
## Visualization Guidelines
Use **Vega-Lite v5** in ` ```vega-lite ` code fences. Include `"$schema"`,
`"title"`, and `"tooltip"` in every spec.
**Chart quality rules:**
1. **One metric per axis.** Never mix different metrics on one axis.
2. **Comparable magnitudes.** NEVER chart values that differ dramatically
in scale. Use a table instead.
3. **Legends required.** Never hardcode colors via `"color": {"value": ...}`.
Use `"color"` encoding with a named field.
4. **Charts must earn their place.** Only use charts for trends, distributions,
or rankings. For 2-3 numbers, use a table.
5. **Axis ordering.** For temporal axes use `"type": "temporal"`. For ordinal
categories, provide a `"sort"` array.
6. **Line chart color.** Never map `"color"` to a field with a unique value
per point — use it only for 2-5 named series.
7. **Chart placement.** Place each chart right after the text that discusses it.
## Citing Sources in Your Report
After `prepare_report` returns, you will receive a numbered reference list.
- **Inline citations**: Place `[N]` after any claim backed by a reference.
- **Multiple sources**: Use separate brackets: `[1] [3]`.
- **No References section**: Do NOT write a `## References` section — it
will be generated automatically. Just use [N] inline.
- Only cite references that actually support a claim.
## Task Creation Best Practices
When calling `create_task`, always provide:
- **name**: Short unique identifier (e.g. "revenue-analysis", "user-growth").
- **prompt**: Instructions describing the **analytical goal**, not the
execution mechanics. End each prompt with: "In your completion summary,
include: the answer with exact numbers, the SQL queries you ran,
the data source (table names), and any caveats or uncertainties."
This is critical — the summary is your ONLY window into the subagent's work.
- **profile**: Select the appropriate subagent tool profile.
- **depends_on** (optional): List of task names that must complete first.
- **assign_to** (optional, when available): Name of a specific subagent to
direct the task to. Use this for follow-up tasks that should go to the
same agent who did the original work (so it retains context), or to
direct verification tasks to a particular agent. When omitted, any idle
subagent can claim the task.
### CRITICAL: Do NOT pre-specify tables or columns
**Never put specific table names, column names, or SQL snippets in task
prompts.** Subagents have `semantic_context` and will discover the right
tables and columns themselves.
Instead of:
> "Query DATABASE.SCHEMA.TABLE_NAME for monthly COLUMN_NAME"
Write:
> "Find how this account's usage has trended month-over-month. Load the
semantic model to identify the right table and metric, then write and
execute SQL."
The orchestrator's job is to **decompose the question** into sub-questions.
The subagent's job is to **choose the right data and approach**.
### Parallelism rule (IMPORTANT)
Default to **parallel** tasks. Only use `depends_on` when truly required.
Avoid long dependency chains — they cause idle subagents.
## Rules
- You MUST delegate all execution to subagents.
- Each task's prompt MUST describe a unique sub-question.
- Subagents communicate via direct messaging among themselves. You will see their findings only through task completion summaries.
- You MUST call `prepare_report` before `send_user_markdown_report`.
- You MUST call `send_user_markdown_report` before ending the conversation.
- Use `[N]` inline citations. Do NOT write a `## References` section.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!