Skip to content
Back to skills

Orchestration Patterns

ASecurity

Catalog of agent orchestration patterns: agents-as-tools, handoff with history filter, deterministic workflows, parallelization, and LLM-as-judge loops. Triggers: orchestration, multi-agent, handoff, agent as tool, agent topology, parallelize agents, LLM-as-judge.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 2, 2026
ai-agentsgorailsapi

Works with

  • cursor
  • cli
  • api

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add Yoodaddy0311/artibot --skill orchestration-patterns --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Orchestration Patterns?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Orchestration Patterns
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/yoodaddy0311-orchestration-patterns/badge)](https://www.skillsdirectory.com/skills/yoodaddy0311-orchestration-patterns)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
context: fork
name: orchestration-patterns
description: "Catalog of agent orchestration patterns: agents-as-tools, handoff with history filter, deterministic workflows, parallelization, and LLM-as-judge loops. Triggers: orchestration, multi-agent, handoff, agent as tool, agent topology, parallelize agents, LLM-as-judge."
lang: [en]
level: 2
triggers: ["orchestration", "multi-agent", "handoff", "agent as tool", "workflow", "parallelize agents", "agent topology"]
agents: ["architect", "planner", "llm-architect"]
tokens: "~3K"
category: "architecture"
platforms: [claude-code, gemini-cli, codex-cli, cursor]
whenNotToUse:
  - "Single-agent task with no delegation"
  - "Trivial scripts that do not need an LLM"
  - "Cases already covered by Agent Teams API native handoff"
source_hash: a3349292
---

# Orchestration Patterns

## Overview

Five canonical patterns for composing multiple agents. Pick exactly one per workflow. All patterns are local — no external orchestrator or queue is required. Maps to Artibot primitives: `agentAsTool()`, `filterHandoffHistory()`, Agent Teams API, `runAll()` guardrails.

## When to Use

- Designing a workflow that spans more than one specialist agent
- Reviewing whether a hand-rolled orchestration loop should be replaced with a standard pattern
- Choosing between making a sub-agent a tool (caller stays in control) vs handing off (control transfers)

## When NOT to Use

- Single-agent calls — direct Agent invocation is enough
- Simple sequential pipelines with deterministic steps and no LLM in between (use a script)
- Patterns that require external infrastructure (queues, vector DB) — out of DATA POLICY scope

## Process

| Step | Action |
|---|---|
| 1 | Map the work into discrete cognitive units (one specialist per unit) |
| 2 | Decide caller-vs-callee semantics: agents-as-tools (caller keeps state) or handoff (callee owns state) |
| 3 | If handoff: choose history filter (default drops `function_call`, `function_call_output`, `reasoning`) |
| 4 | If parallel: ensure each unit is independent and aggregate via deterministic merge |
| 5 | Add guardrails at boundaries (input on entry, output on exit) |

## Pattern Catalog

| Pattern | When | Artibot primitive |
|---|---|---|
| Agents as tools | Caller is the planner; sub-agents are utilities | `agentAsTool({name, description})` |
| Handoff | Specialist takes over the conversation | Agent Teams + `filterHandoffHistory()` |
| Deterministic workflow | Steps are fixed; no branching needed | Plain function pipeline |
| Parallelization | N independent subtasks | `Promise.all` + reducer |
| LLM-as-Judge | Quality gate after generation | Two-agent loop with explicit threshold |

## Common Rationalizations
> 이 절은 참고 자료다 — 아래 변명·반박은 모델이 작업 중 스스로 지름길을 점검하는 데 쓰고, 사용자에게 묻는 질문 목록이나 별도 게이트로 쓰지 않는다. 반박에 비추어 스스로 바로잡을 수 없으면 이 스킬의 Step·Checkpoint 규칙을 따른다.

| Excuse | Rebuttal |
|---|---|
| "I'll just chain prompts" | Chained prompts lose state; named patterns track history and tools |
| "handoff and agent-as-tool are the same" | They differ: handoff transfers control; agent-as-tool keeps the caller in charge |
| "we don't need a history filter" | Without filtering, the next agent re-processes function-call noise as if it were instructions |
| "one big prompt is simpler" | One big prompt makes evaluation impossible; patterns let you measure each unit |

## Red Flags

- An agent-as-tool that mutates global state (must be referentially transparent)
- A handoff that re-includes raw `function_call` items (defeats the filter)
- Parallel branches that depend on each other's output (use sequential)
- "Judge" that uses the same model and prompt as the generator (rubber-stamp)

## Verification

- `tests/lib/orchestration/agent-as-tool.test.js` validates the wrapper contract
- Cross-check: each chosen pattern matches exactly one row in the catalog table
- Confirm history filter drops the documented item types in handoff cases

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.