From agenticflow-plugin
Deploys and operates multi-agent AgenticFlow workforces as DAGs of handoff agents (trigger → coordinator → workers → output) for pipelines like research-then-write, dev shops, or marketing agencies. Use for 'team', 'workforce', 'multi-agent' requests.
npx claudepluginhub pixelml/agenticflow-skill --plugin agenticflow-pluginThis skill uses the workspace's default tool permissions.
A workforce is an AgenticFlow-native **DAG of agents** — typically `trigger → coordinator agent → worker agents → output` — that hand off structured results to each other. Use this when orchestration between roles matters.
Designs CrewAI multi-agent teams: agent personas with roles/goals/backstories, tasks/dependencies, orchestration, processes (sequential/hierarchical/parallel), memory, flows, tool integration.
Orchestrates Claude Code agent teams for parallel multi-agent workflows on complex tasks using TeamCreate, SendMessage, TaskUpdate, and shared task lists. Enable with --enable-teams flag.
Provides best practices for Agent Teams skills: sub-agent setup, SendMessage protocols, task dependencies, logging hooks, context design, and patterns from 7 examples. Use to create new team skills, audit existing, debug communication.
Share bugs, ideas, or general feedback.
A workforce is an AgenticFlow-native DAG of agents — typically trigger → coordinator agent → worker agents → output — that hand off structured results to each other. Use this when orchestration between roles matters.
If the user wants a single chat endpoint, a customer-facing bot, one assistant, or routing-by-prompt inside one agent, use agenticflow-agent instead. A single-agent solution with rules in the system prompt is simpler, cheaper, and easier to iterate on. Workforces are for genuine multi-role orchestration.
af bootstrap --json
Returns auth, agents, workforces, blueprints, commands, playbooks, whats_new, _links. Extract:
auth.project_id — required for agent creation (the agents inside your workforce)auth.workspace_id_links.workspace — surface this URL to the user right away: "Your workspace is at <_links.workspace> — open it anytime to see the workforce I'm building." The user needs a human-first anchor before the first mutationblueprints[] — the 6 built-in team templates, each with required/optional slot countsworkforces[] — any existing workforces in the workspace (empty initially is normal; check data_fresh if false — that means the backend was unreachable, not the workspace empty)If data_fresh: false in the bootstrap response, the backend is degraded — do not mutate. Run af doctor --json --strict and fix auth/network before proceeding.
| Blueprint | Required slots | Optional |
|---|---|---|
dev-shop | ceo, engineer | designer, qa |
marketing-agency | ceo, cmo, designer | researcher |
sales-team | ceo, researcher, general | — |
content-studio | ceo, cmo, engineer | designer |
support-center | ceo, general | researcher |
amazon-seller | ceo, cmo, engineer, researcher | general |
tutor | ceo, cmo, engineer, researcher | general |
freelancer | ceo, cmo, engineer, researcher | general |
Heads-up: the
tutorandfreelancerblueprints replace the legacyaf pack install tutor-pack/freelancer-packflow as of CLI v1.7.0.af pack *still works but is deprecated (sunset 2026-10-14).
Always preview with --dry-run first:
af workforce init --blueprint <slug> --name "<name>" --dry-run --json
af workforce init --blueprint <slug> --name "<name>" --json
init creates the workforce + one real agent per required slot + the wired graph — in a single atomic call. On failure, every resource is rolled back automatically; inspect details.rolled_back_agents and details.rolled_back_workforce in the error.
Use --include-optional-slots to fill every slot, not just required ones. Use --model <id> (e.g. agenticflow/gemini-2.0-flash) to override the default model for all auto-created agents.
If the user's ask is a precise custom pipeline that no blueprint matches (e.g. a 2-step researcher → writer flow that doesn't fit the 3–5-agent blueprints), skip blueprints:
af schema workforce --field schema --json
af workforce create --body '{"name":"Raul Content Pipeline","description":"..."}' --json
af agent create (see agenticflow-agent skill).trigger → researcher (agent node, agent_id from step 3) → writer (agent node) → output.af workforce deploy --workforce-id <id> --body @graph.json --json
af workforce validate --workforce-id <id> --json
Edge connection_type is one of next_step, condition, ai_condition. Agent nodes require a real agent_id in input.
af workforce run --workforce-id <id> --trigger-data '{"message":"..."}'
# Streams SSE events — each line is one JSON event. The CLI auto-wraps your
# payload in {trigger_data: ...} — don't wrap it yourself.
af workforce publish --workforce-id <id> --json
# Mints a public_key + public_url — hand this to teammates so they can run the
# workforce without platform auth.
af workforce versions publish --workforce-id <id> --version-id <v> --json
# Snapshot + publish a specific version (draft/published/restore workflow).
MCP clients attach to individual agents, not to the workforce graph. After init, use:
af mcp-clients list --name-contains "google sheets" --fields id,name --json
af mcp-clients inspect --id <mcp_id> --json # Check pattern before attach
af agent update --agent-id <agent_id> --patch --body '{"mcp_clients":[{"mcp_client_id":"<id>","run_behavior":"auto_run","tools":{}}]}' --json
See the agenticflow-mcp skill for the Pipedream vs Composio write-safety distinction.
Workforces + agents are billed while they exist. Delete test deploys:
af workforce delete --workforce-id <id> --json
# For each auto-created agent id captured from init:
af agent delete --agent-id <id> --json
Both return {"schema":"agenticflow.delete.v1","deleted":true,"id":"...","resource":"..."} on success.
All API errors return {schema: "agenticflow.error.v1", code, message, hint, details}. Read hint first — it points at the recovery command (e.g. af <resource> list on a 404). For 422s, inspect details.payload.detail for field-level errors.
workforce run occasionally returns a backend Failed to retrieve user info for user_id: api_key:... 400 — this is a known server-side issue with API-key auth, not a CLI bug.