Creates and orchestrates multi-agent pipelines on the iii engine. Use when building AI agent collaboration, agent orchestration, research/review/synthesis chains, or any system where specialized agents hand off work through queues and shared state.
79
73%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/iii-agentic-backend/SKILL.mdComparable to: LangGraph, CrewAI, AutoGen, Letta
Use the concepts below when they fit the task. Not every agentic workflow needs all of them.
HTTP request
→ Enqueue(agent-tasks) → Agent 1 (researcher) → writes state
→ Enqueue(agent-tasks) → Agent 2 (critic) → reads/updates state
→ explicit approval check (is-approved?)
→ Enqueue(agent-tasks) → Agent 3 (synthesizer) → final state update
→ publish(research.complete)| Primitive | Purpose |
|---|---|
registerWorker | Initialize the worker and connect to iii |
registerFunction | Define each agent |
trigger state::set, state::get, state::update | Shared context between agents |
trigger({ ..., action: TriggerAction.Enqueue({ queue }) }) | Async handoff between agents via named queue |
trigger({ function_id, payload }) | Explicit condition check before enqueuing |
trigger({ function_id: 'publish', payload, action: TriggerAction.Void() }) | Broadcast completion to any listeners |
registerTrigger({ type: 'http' }) | Entry point |
See ../references/agentic-backend.js for the full working example — a multi-agent research pipeline where a researcher gathers findings, a critic reviews them, and a synthesizer produces a final report.
Code using this pattern commonly includes, when relevant:
registerWorker(url, { workerName }) — worker initializationtrigger({ function_id, payload, action: TriggerAction.Enqueue({ queue }) }) — async handoff between agentsstate::set, state::get, state::update — shared context between agentsawait iii.trigger({ function_id: 'condition-fn', payload }) before enqueuing next agenttrigger({ function_id: 'publish', payload: { topic, data }, action: TriggerAction.Void() }) — completion broadcastregisterFunction with agents:: prefix IDsconst logger = new Logger() — structured logging per agentUse the adaptations below when they apply to the task.
TriggerAction.Enqueue({ queue })iii-config.yaml under queue_configsresearch-tasks, support-tickets)functionId segments should reflect your agent hierarchy (e.g. agents::researcher, agents::critic)Named queues for agent handoffs are declared in iii-config.yaml under queue_configs. See ../references/iii-config.yaml for the full annotated config reference.
registerFunction (including prompts asking for { path, id } endpoint maps + loops), prefer iii-http-invoked-functions.iii-agentic-backend when the primary problem is multi-agent orchestration, queue handoffs, approval gates, and shared context.iii-agentic-backend in the iii engine.8921efa
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.