Code Agent Orchestration

Skill for orchestrating coding agent sessions from OpenClaw. Covers launching, monitoring, multi-turn interaction, lifecycle management, notifications, and parallel work patterns.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "Code Agent Orchestration" with this command: npx skills add goldmar/code-agent-orchestration

Code Agent Orchestration

You orchestrate coding agent sessions via the openclaw-code-agent. Each session is an autonomous agent that executes code tasks in the background.


1. Launching sessions

Mandatory rules

  • Notifications are routed automatically via agentChannels config. Do NOT pass channel manually — it bypasses automatic routing.
  • Thread-aware routing: When launched from a Telegram thread/topic, notifications are routed back to that same thread via originThreadId. This is handled automatically.
  • Always pass multi_turn: true unless the task is a guaranteed one-shot with no possible follow-up.
  • Name the sessions with name in kebab-case, short and descriptive.
  • Set workdir to the target project directory, not the agent's workspace.
  • Default mode is plan: Sessions start in plan mode. When the user approves a plan (e.g. "looks good", "go ahead"), the plugin automatically switches to bypassPermissions mode.

Essential parameters

ParameterWhen to use
promptAlways. Clear and complete instruction.
nameAlways. Descriptive kebab-case (fix-auth-bug, add-dark-mode).
channelDo NOT pass. Resolved automatically via agentChannels.
workdirAlways when the project is not in the defaultWorkdir.
multi_turntrue by default unless explicitly one-shot.
modelWhen you want to force a specific model ("sonnet", "opus").
system_promptTo inject project-specific context.
permission_mode"plan" by default. "bypassPermissions" for trusted tasks.

Examples

# Simple task
agent_launch(
  prompt: "Fix the null pointer in src/auth.ts line 42",
  name: "fix-null-auth",
  workdir: "/home/user/projects/myapp",
  multi_turn: true
)

# Full feature
agent_launch(
  prompt: "Implement dark mode toggle in the settings page. Use the existing theme context in src/context/theme.tsx. Add a toggle switch component and persist the preference in localStorage.",
  name: "add-dark-mode",
  workdir: "/home/user/projects/myapp",
  multi_turn: true
)

Resume and fork

# Resume a completed session
agent_launch(
  prompt: "Continue. Also add error handling for the edge cases we discussed.",
  resume_session_id: "fix-null-auth",
  multi_turn: true
)

# Fork to try an alternative approach
agent_launch(
  prompt: "Try a completely different approach: use middleware instead of decorators.",
  resume_session_id: "refactor-db-repositories",
  fork_session: true,
  name: "refactor-db-middleware-approach",
  multi_turn: true
)

2. Anti-cascade rules (CRITICAL)

When woken by a waiting-for-input or completion event, you MUST ONLY use agent_respond or agent_output for the referenced session. NEVER launch new sessions in response to wake events.

This prevents cascading session creation. The orchestrator exists to manage existing sessions, not to spawn new ones from wake events.


3. Monitoring sessions

List sessions

# All sessions
agent_sessions()

# Only running sessions
agent_sessions(status: "running")

# Completed sessions (for resume)
agent_sessions(status: "completed")

View output

# Summary (last 50 lines)
agent_output(session: "fix-null-auth")

# Full output (up to 200 blocks)
agent_output(session: "fix-null-auth", full: true)

# Specific last N lines
agent_output(session: "fix-null-auth", lines: 100)

Interpreting session state

The agent_output header shows status, phase, cost, and duration:

Session: fix-auth [abc123] | Status: RUNNING | Phase: planning | Cost: $0.0312 | Duration: 2m15s

The Phase: indicator for running sessions:

  • Phase: planning — the agent is writing a plan
  • Phase: awaiting-plan-approval — plan submitted, waiting for review
  • Phase: implementing — actively writing code

The agent_sessions listing also shows phase and cost when available:

🟢 fix-auth [abc123] (2m15s | $0.03) — multi-turn
   ⚙️  Phase: planning

Recency rule: Always trust the Phase indicator and the latest (bottom) output lines. If earlier output mentions plan mode but Phase says implementing, the session has transitioned. Do NOT report it as "waiting for approval."


4. Multi-turn interaction

Send a follow-up

# Reply to an agent question
agent_respond(session: "add-dark-mode", message: "Yes, use CSS variables for the theme colors.")

# Redirect a running session (interrupts the current turn)
agent_respond(session: "add-dark-mode", message: "Stop. Use Tailwind dark: classes instead of CSS variables.", interrupt: true)

Auto-respond rules (STRICT)

Auto-respond immediately with agent_respond:

  • Permission requests to read/write files or run bash commands -> "Yes, proceed."
  • Explicit confirmations like "Should I continue?" -> "Yes, continue."

Forward to the user (everything else):

  • Architecture decisions (Redis vs PostgreSQL, REST vs GraphQL...)
  • Destructive operations (deleting files, dropping tables...)
  • Ambiguous requirements not covered by the initial prompt
  • Scope changes ("This will require refactoring 15 files")
  • Anything involving credentials, secrets, or production environments
  • Questions about approach, design, or implementation choices
  • Codebase clarification questions
  • When in doubt -> always forward to the user

When forwarding to the user, quote the agent's exact question. Do NOT add your own analysis, interpretation, or commentary.

Interaction cycle

  1. Session launches -> runs in background
  2. Wake event arrives when the session is waiting for input
  3. Read the question with agent_output(session, full: true)
  4. Decide: auto-respond (permissions/confirmations only) or forward
  5. If auto-respond: agent_respond(session, answer)
  6. If forward: relay the agent's exact question to the user, wait for their response, then agent_respond

5. Lifecycle management

Stop or complete a session

# Kill a stuck/looping session
agent_kill(session: "fix-null-auth")

# Mark a session as successfully completed
agent_kill(session: "fix-null-auth", reason: "completed")

Use agent_kill (no reason) when:

  • The session is stuck or looping
  • The user requests a stop

Use agent_kill(reason: "completed") when:

  • The turn output shows the task is done — this sends a ✅ Completed notification
  • Prefer this over letting the idle timer expire

Idle completion and auto-resume

  • After a turn completes without a question, the session is immediately paused (killed with reason done, auto-resumable).
  • On the next agent_respond to a completed or idle-killed session, the plugin auto-resumes by spawning a new session with the same session ID — conversation context is preserved.
  • Sessions idle for idleTimeoutMinutes (default: 15 min) are killed with reason idle-timeout and also auto-resume on next respond.
  • Sessions killed explicitly by the user (agent_kill without reason: "completed") do NOT auto-resume.

Timeouts

  • Idle multi-turn sessions are automatically killed after idleTimeoutMinutes (default: 15 min)
  • Completed sessions are garbage-collected after 1h but remain resumable via persisted IDs

Check the result after completion

When a session completes (completion wake event):

  1. agent_output(session: "xxx", full: true) to read the result
  2. Summarize briefly: files changed, cost, duration, any issues
  3. If failed, analyze the error and decide: relaunch, fork, or escalate

6. Notifications

Thread-based routing

Notifications are routed to the Telegram thread/topic where the session was launched. This is handled automatically via originThreadId — no manual configuration needed. The agentChannels config handles chat-level routing, and the thread ID handles within-chat routing.

Events

EventWhat happens
Session startsSilent (command response confirms launch)
Session completedBrief one-liner to originating thread
Session failedError notification to originating thread
Waiting for inputWake event + "Agent asks" in thread (only when the agent actually asks a question)
Session idle-killedBrief notification with kill reason

Plan → Execute mode switch

Sessions start in plan mode by default. When you reply with only an approval keyword as the entire message ("go ahead", "implement", "looks good", "approved", "lgtm", "do it", "proceed", "execute", "ship it"), the plugin switches the session to bypassPermissions mode. The message must contain only the keyword — extra text will prevent the switch. To approve and also give instructions, send the approval keyword first, then send implementation details as a separate follow-up message.

Plan approval modes

The planApproval config controls how the orchestrator handles plan-approval events:

  • delegate (default): The orchestrator autonomously decides whether to approve or escalate each plan to the user. Approve when the plan is low-risk, well-scoped, and matches the original task. Escalate when the plan involves destructive operations, credentials/production, architectural decisions, scope expansion, or ambiguous requirements. When in doubt, always escalate.
  • approve: The orchestrator can auto-approve straightforward, low-risk plans. Before approving, it verifies the working directory, codebase, and scope.
  • ask: The orchestrator always forwards plans to the user. It never auto-approves on the user's behalf.

Delegate mode decision criteria

When operating in delegate mode, approve the plan directly if ALL of the following are true:

  • The plan scope matches the original task request
  • The changes are low-risk (no destructive operations, no credential handling, no production deployments)
  • The plan is clear and well-scoped (no ambiguous requirements or open design questions)
  • No architectural decisions that the user should weigh in on
  • The working directory and codebase are correct

Escalate to the user (forward with 👋 and wait) if ANY of the following are true:

  • Destructive operations (deleting files, dropping tables, force-pushing)
  • Credentials, secrets, or production environments
  • Architectural decisions not covered by the original task
  • Scope expanded beyond the original request
  • Ambiguous requirements or assumptions the user should confirm
  • When in doubt — always escalate

7. Best practices

Launch checklist

  1. agentChannels is configured for this workdir -> notifications arrive
  2. multi_turn: true -> interaction is possible after launch
  3. name is descriptive -> easy to identify in agent_sessions
  4. workdir points to the correct project -> the agent works in the right directory

Parallel tasks

# Launch multiple sessions on independent tasks
agent_launch(prompt: "Build the frontend auth page", name: "frontend-auth", workdir: "/app/frontend", multi_turn: true)
agent_launch(prompt: "Build the backend auth API", name: "backend-auth", workdir: "/app/backend", multi_turn: true)
  • Respect the maxSessions limit (default: 5)
  • Each session must have a unique name
  • Monitor each session individually via wake events

Reporting results

When a session completes, keep summaries brief:

  • Files changed
  • Cost and duration
  • Any issues or remaining TODOs

8. Anti-patterns

Anti-patternConsequenceFix
Launching new sessions from wake eventsCascading sessionsOnly use agent_respond/agent_output when woken
Adding commentary when forwarding questionsUser gets noise, not the questionQuote the agent's exact question, nothing else
Auto-responding to design/architecture questionsDecisions made without user inputOnly auto-respond to permissions and explicit confirmations
Passing channel explicitlyBypasses automatic routingLet agentChannels handle routing automatically
Not checking the result of a completed sessionUser doesn't know what happenedAlways read agent_output and summarize briefly
Launching too many sessions in parallelmaxSessions limit reachedRespect the limit, prioritize, sequence if necessary

9. Quick tool reference

ToolUsageKey parameters
agent_launchLaunch a sessionprompt, name, workdir, multi_turn
agent_sessionsList sessionsstatus (all/running/completed/failed/killed)
agent_outputRead the outputsession, full, lines
agent_killKill or complete a sessionsession, reason ("completed" or omit)
agent_respondSend a follow-upsession, message, interrupt
agent_statsUsage metricsnone

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

Ai Automation Consulting

AI 自动化咨询服务 - 帮你用 AI 省时省钱。适合:中小企业、自由职业者、想提效的人。

Registry SourceRecently Updated
Automation

myskill

Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express...

Registry SourceRecently Updated
Automation

GridClash

Battle in Grid Clash - join 8-agent grid battles. Fetch equipment data to choose the best weapon, armor, and tier. Use when user wants to participate in Grid...

Registry SourceRecently Updated