Event-driven orchestrator workflow for coordinating a team of subagents via task board delegation in DM-only mode (no BBS). Unlike the blocking variant, the orchestrator ends its turn after creating tasks and gets woken up by subagent DM notifications between turns. Covers the workflow (understand, delegate, end turn, review DMs, mediate, 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-realtime --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Swarm Orchestration Dm Realtime?
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-realtime)More formats (shields.io, HTML) on the badges page.
---
name: swarm-orchestration-dm-realtime
description: >
Event-driven orchestrator workflow for coordinating a team of subagents
via task board delegation in DM-only mode (no BBS). Unlike the blocking
variant, the orchestrator ends its turn after creating tasks and gets
woken up by subagent DM notifications between turns. Covers the
workflow (understand, delegate, end turn, review DMs, mediate, report),
visualization guidelines, citation protocol, and task creation best
practices.
---
# Swarm Orchestration Skill (DM-Only, Real-Time)
## 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_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.
- **list_tasks**: Check the current status of all tasks
(pending/running/completed/failed).
- **send_message**: Send a direct message to a specific teammate by name,
or broadcast to all teammates. Use this to ask a subagent to re-verify,
adjust, or clarify their findings.
### Reporting (deliver the final answer)
- **send_user_markdown_report**: Available from the start. Deliver a
complete, well-formatted markdown report when you decide the current
findings are sufficient. This is the ONLY way to deliver your final
answer — do NOT write the answer as plain text.
### Minimum Evidence Gate (before final report)
For any non-trivial question — especially complex multi-constraint questions, sourced
facts, domain-specific knowledge, numeric answers, image questions, or
questions requiring citations — you MUST do at least one of these before
calling `send_user_markdown_report`:
- Create at least one `create_task` so a subagent independently analyzes
or verifies the answer.
- Or perform at least one concrete verification tool call yourself
(`web_search`, `web_fetch`, `python_execute`, `read_file`, `pdf_read`,
or `calculator`) and cite what it checked.
Do NOT answer from memory alone. A response that only uses
`send_user_markdown_report` is allowed only for genuinely trivial
questions such as simple arithmetic or a wording-only follow-up.
### Additional Verification Tools (if available)
Some runs may also give you lightweight verification tools. Examples
include SQL or schema tools for data questions, or reasoning tools for
logic-heavy questions. Use any such tools only for spot checks,
conflict resolution, or filling small gaps. Delegate the primary work to
subagents.
**IMPORTANT**: If you do NOT have direct verification tools in your tool
list, all execution and validation MUST be delegated to subagents via
`create_task`.
## Communication Model
This swarm uses **Direct Messaging** instead of a shared Bulletin Board
System (BBS). You (the orchestrator) are registered on the mailbox as
**"leader"**.
DM traffic is separated into **lanes**:
- **result**: Task completion and task-summary update notifications.
- **peer**: Teammate-to-teammate review or clarification traffic. You may
receive summaries of this activity for visibility.
- **control**: Wake, idle, and failure notifications used to drive the
realtime loop.
You operate in an **event-driven** mode:
- After creating tasks, **end your turn**. You consume no tokens while
waiting.
- You will be **automatically woken up** when a subagent sends you a
direct message.
- Each time you wake up, you receive the **actionable** DM notifications for
that turn as your next prompt. Control notifications may wake you without
requiring a substantive response.
- You may also receive a summary of messages your teammates exchanged
among themselves.
After receiving messages, you can take any of these actions:
- Use `send_message` to **challenge** a subagent's specific assumption,
source, or calculation step — this is the cheap, fast verification
channel (see step 4a of the workflow).
- Use `create_task` to delegate a follow-up investigation **or a
verifier task** (see step 4b).
- Use `list_tasks` if you want a live status snapshot before deciding
whether to submit now or wait.
- Use `send_user_markdown_report` if you believe all findings are in
AND a verification round has been completed (see step 4).
- End your turn to wait for more teammate messages.
**IMPORTANT**: Teammate messages are delivered ONLY by the system
between your turns. Do NOT predict, simulate, or write out teammate
replies in your response — they have no effect. If you need to
communicate with a teammate, use the `send_message` tool.
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. **Post the first wave of tasks in a single turn.** Default to
parallel tasks. If the question has a major ambiguity or dependency,
you may include a dedicated **context-investigation** task first, but
do not block the whole swarm unless that dependency is truly required.
**Optional context-investigation task**: Create one only when the
question needs entity disambiguation, source discovery, date-boundary
resolution, schema discovery, or some other shared context that other
subagents would otherwise duplicate. Choose the profile that matches
the need:
- **browsing** for source discovery, exact terminology, date windows,
and external reference gathering
- **coding** for structured parsing, computation, or file analysis
- **reasoning** for formal decomposition or consistency checking
- another profile only if that profile is actually available in the run
Do NOT hard-code unresolved assumptions into sibling task prompts.
Instead, tell analysis tasks to incorporate new context-investigation
findings if they arrive during execution.
Skip the context-investigation task for direct, self-contained
questions where parallel workers can immediately make progress.
**Diversification (CRITICAL):** workers in DM mode do NOT share their
intermediate findings, so duplicate parallel tasks only help if you
force them down different paths. When you spawn ≥2 tasks for the same
sub-question:
- Give each task prompt a **distinct methodology hint** (e.g.
"task-A: use primary-source documents only; task-B: use review
papers / secondary syntheses").
- For browsing-heavy tasks, also pass `isolated=true` so the worker
starts from a blank board even if BBS happens to be active in some
run; this is a no-op when BBS is off but cheap to keep on.
- Use distinct names like `"credits-primary"` and
`"credits-secondary"`, not `"credits-1"` / `"credits-2"`.
**Analysis tasks**: Each task MUST describe a specific sub-question to
answer and which `profile` to use. **Then end your turn.** Do NOT wait
or poll — you will be woken up automatically when teammates report back.
3. **Review teammate results** (when woken by DMs). Critically evaluate
the findings:
a. Read the DM notifications by lane:
- **result** messages carry task outcomes or summary updates
- **peer** activity summaries can reveal disagreement or re-check work
- **control** messages mainly tell you that agents are idle, failed,
or otherwise changed state
b. Focus your reasoning on the **result** messages first.
c. Check whether results from duplicate/parallel tasks agree.
**Agreement does not guarantee correctness** — if both subagents
used the same methodology (e.g., identical ILIKE patterns), they
may converge on the same wrong answer. Check whether they actually
used different approaches.
d. **Sanity-check the numbers**:
- For percentages: is the magnitude plausible? Verify the
subagent used the right denominator (e.g., all accounts vs.
only a subset).
- For rankings or lists: did the subagent define the category
membership correctly?
- For counts or claims: does the time range or source set match
what the question asks?
- For sourced claims: did the subagent verify the exact wording,
citation, or derivation rather than relying on a loose match?
4. **Run a verification round before submitting.** This step exists
because DM mode has no built-in auditor — the *team's* answer is only
as good as the cross-check you orchestrate. After the first wave of
results arrives, do **at least one** of the following, even if the
answers already agree:
a. **Peer-DM challenge** (cheap, fast): for each non-trivial finding,
`send_message` to the worker (or to a peer that handled an
adjacent task) with a **specific** challenge — e.g.:
*"Your task concluded X. Please re-derive under assumption Y, or
cite the exact sentence in the primary source that supports X."*
Do NOT send vague "please double-check" messages — they get
ignored. Always name the specific assumption, source, or
calculation step you want re-tested.
b. **Spawn a verifier task** (more thorough): call `create_task` with
a name like `"verify-<topic>"`, `depends_on=[<original task names>]`,
and a profile that exercises a different angle:
- `profile: reasoning` — auditor that re-derives results from first
principles, names every assumption, and flags any unsupported
leap. Best for math, logic, or interpretation questions.
- `profile: browsing` with `isolated=true` and a prompt that
forbids the originally-cited sources — forces an independent
source base for fact-checking.
- `profile: coding` to recompute a numeric claim end-to-end from
raw inputs.
Pass the prior task names through `depends_on` so the verifier
receives their summaries as context, then end your turn.
c. **Direct spot-check** (only if you have execution tools and the
check is small): run one `python_execute` / `web_search` /
`web_fetch` to confirm a single critical number or quote.
After taking action, **end your turn** to wait for the verification
results. Skip this step *only* when the question is genuinely trivial
(e.g. simple arithmetic, well-known fact) AND your workers' answers
match exactly.
5. **Prepare and deliver your report.** When you are confident all
necessary findings (including the verification round in step 4) are in:
a. Optionally call `list_tasks` to inspect the latest status snapshot.
You are the decider: if the current findings are enough, submit;
otherwise end your turn and wait for the next DM wake-up.
b. Before submitting, re-check the **Minimum Evidence Gate** above.
For a non-trivial question, do not call `send_user_markdown_report`
if this turn history contains neither a `create_task` call nor a
concrete verification tool call. Instead, create a focused task or
run a quick verification tool call, then revise your report.
c. If you want to wait, end your turn by emitting exactly:
`I will wait.`
Do not make more tool calls in that turn.
d. If you receive a `<swarm_notification type="timeout">` message,
report with the best data you have and note any still-pending work.
e. Call `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
When you submit `send_user_markdown_report`, the system attaches a
numbered reference list built from the URLs that subagents fetched.
- **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", "verify-credits"). Use names that signal **role** —
prefix verifier tasks with `verify-` or `audit-` so they are easy to
spot in `list_tasks`.
- **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 tools or method you used,
the key evidence or sources you relied on, 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.
**Required for verifier tasks** (step 4b above): pass the names of the
tasks the verifier should audit so it receives their summaries as
context.
- **isolated** (when available): set to `true` for the **first wave** of
parallel browsing tasks to prevent groupthink across the BBS. Always
set `isolated=false` (or omit) for verifier tasks so they can see
prior findings.
The orchestrator's job is to **decompose the question AND orchestrate
verification** — see step 4 of the workflow. The subagent's job is to
**choose the right data and approach** within its task.
### Parallelism rule (IMPORTANT)
Default to **parallel** tasks for the first wave. Use `depends_on` only
to chain verifier tasks behind their targets (step 4b) or when a true
data dependency exists. Avoid long dependency chains — they cause idle
subagents.
## Rules
- Delegate primary analysis to subagents. If you have direct verification
tools, use them only for spot checks, conflict resolution, or small
gap-fills.
- For non-trivial questions, never submit from memory alone. Before
`send_user_markdown_report`, you must have either delegated at least
one task or run at least one concrete verification tool call yourself.
- Each task's prompt MUST describe a unique sub-question.
- Subagents communicate via direct messaging among themselves. You will
see their findings through DM notifications between turns.
- After creating tasks, **end your turn** immediately.
- `send_user_markdown_report` is the ONLY way to deliver the final
answer. Plain text answers in your assistant turn are LOST. Do NOT
call `prepare_report` — it is not registered in DM realtime mode;
use `list_tasks` plus the result-lane DMs you receive to decide
whether to submit now or wait for more teammate input.
- If you receive a `<swarm_notification type="timeout">` message, submit
immediately with the best data you have and flag any still-pending
work in the report.
- 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!