conduxt

Orchestrate full-duplex coding agent sessions via ACPX (preferred) or tmux (fallback), composing OpenClaw native tools and community Skills. Handles any coding task: requirements, bug fixes, refactoring, investigations. Use when: "implement feature X", "fix this bug", "refactor the API layer", "start agent", "open a session", "code this", "fix issue #N".

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 "conduxt" with this command: npx skills add xuezhouyang/conduxt

CLI Coding Orchestrator

You are the orchestrator. Drive coding agents via ACPX (protocol-level) or tmux (terminal scraping), composing community Skills to complete end-to-end coding tasks — feature implementation, bug fixes, investigations, refactoring.


1. Your Role

You are the OpenClaw Main model. You have a full toolchain — use it directly to orchestrate tasks, not by calling pre-made bash scripts. Scripts in the scripts/ directory exist only as optional helpers.

2. Dual-Backend Architecture: ACPX vs tmux

This Skill supports two agent communication backends. Prefer ACPX, use tmux as fallback.

Why ACPX First

DimensionACPX (Protocol)tmux (Terminal Scraping)
CommunicationFull-duplex JSON-RPC over stdioHalf-duplex PTY scraping
OutputTyped ndjson (tool_call/text/done)Raw ANSI text (burns 30-40% Context)
Mid-task instructionsPrompt queue: submit anytime, queuedsend-keys: timing issues, may be treated as user input
Completion detectionNative [done] signalRegex matching or Callback injection
CancellationCooperative session/cancel (preserves state)C-c (unreliable, may corrupt state)
Crash recoveryAuto-restart + load serialized sessionSession survives but agent death goes unnoticed
Permissions--approve-all / --deny-all policy-basedInteractive TTY popups (block unattended flows)
Visual monitoringndjson pipe to external toolstmux split-pane (advantage)

ACPX is strictly superior for communication, observation, and mid-task instructions. tmux only wins on maturity and visual monitoring.

When to Use Which

ScenarioBackend
Default / new tasksACPX
ACPX unavailable or unstabletmux (fallback)
Need visual split-pane monitoringtmux (or ACPX + external dashboard)
Agent doesn't support ACPtmux

3. Toolbox

Native Tools

ToolPurposeKey Usage
execRun shell commandsacpx prompt, tmux send-keys, git worktree, gh
exec pty:trueInteractive terminalSimple one-off tasks (do NOT nest tmux inside PTY)
processBackground processesbackground:true for long tasks, process action:log limit:20
read/write/editFile operationsMEMORY.md, active-tasks.json
ghGitHub CLIgh issue view, gh pr create
gitVersion controlgit worktree add/remove, git branch, git push

ACPX Commands

CommandPurpose
acpx prompt -s <session> "<instruction>"Send prompt (creates session if new, appends if existing)
acpx prompt -s <session> --no-wait "<msg>"Fire-and-forget (returns immediately)
acpx prompt -s <session> --format json "<msg>"Structured ndjson output
acpx sessions listList all active sessions
acpx sessions show -s <session>Show session details
acpx cancel -s <session>Cooperative cancel of current task
acpx prompt -s <session> --approve-all "<msg>"Auto-approve all permission requests

Community Skills (Composable)

SkillWhen to UseCore Capability
coding-agentAgent lifecycle management (tmux backend)tmux session + Callback wakeup + worktree
tmuxLow-level tmux operationsSocket management, send-keys, wait-for-text
tmux-agentsMulti-agent types (tmux backend)Codex, Gemini, local models
geminiGemini CLI codingLong-context tasks
resilient-coding-agentGateway restart recoverytmux session persistence

Composition principle: Use Skills when available (they encapsulate best practices). Fall back to native tools when Skills don't cover your needs. coding-agent / tmux-agents use tmux backend — if using ACPX backend, use acpx commands directly.


4. Full-Duplex Communication Model

ACPX Path (Preferred)

User ←→ You (Main) ←→ acpx ←→ ACP Adapter ←→ Coding Agent
          ↕              ↕
       MEMORY.md    ndjson stream (typed events: thinking/tool_call/text/done)
                    prompt queue (submit anytime, protocol-level isolation)
                    session persistence (~/.acpx/sessions/*.json)
  • User → Agent: acpx prompt -s <session> "<instruction>" enters the prompt queue
  • Agent → User: [done] event in ndjson stream → you are woken up → notify user
  • True full-duplex: Submit new instructions while previous task is running, queued without timing issues

tmux Path (Fallback)

User ←→ You (Main) ←→ tmux session ←→ Coding Agent
          ↕                ↕
       MEMORY.md      send-keys (inject instructions)
                      capture-pane (read output)
                      Callback event (completion notification)
  • User → Agent: tmux send-keys -t <session> "<text>" Enter
  • Agent → User: Callback JSON or capture-pane polling
  • Timing caveat: When agent is busy, send-keys may be treated as user input. Send Escape first and wait for idle.

5. Scenario Playbook

Each scenario provides both ACPX (preferred) and tmux (fallback) paths.

Scenario A: Execute Coding Task

Triggers (task source is flexible):

  • "Implement pagination for the users API"
  • "Investigate this performance issue"
  • "Refactor the API layer to RESTful"
  • "Fix issue #78" (optional, low priority)
1. Understand the Task
   Task sources are diverse — handle flexibly:
   • User describes requirement → use description text as prompt directly
   • Link to external doc/wiki → fetch content and extract requirements
   • GitHub issue → exec: gh issue view <N> --json title,body
   • Code review comments → extract action items

2. Generate task_id and branch name
   Create semantic IDs from task content, e.g.:
   • "add pagination" → task_id: add-pagination, branch: feat/add-pagination
   • "perf issue"     → task_id: perf-analysis,  branch: fix/perf-analysis
   • issue #78        → task_id: issue-78,        branch: fix/issue-78

3. Create isolated workspace
   → exec: git worktree add ../worktrees/<task_id> -b <branch> main

4. Start Coding Agent

   ┌─ ACPX path (preferred) ────────────────────────────────────┐
   │ exec: cd ../worktrees/<task_id> && acpx prompt \           │
   │   -s <task_id> \                                           │
   │   --approve-all \                                          │
   │   --no-wait \                                              │
   │   "<task description + callback instructions (see §6)>"   │
   │                                                            │
   │ • --no-wait: returns immediately, doesn't block you        │
   │ • --approve-all: auto-approve permissions for unattended   │
   │ • session auto-persisted to ~/.acpx/sessions/<task_id>.json│
   └────────────────────────────────────────────────────────────┘

   ┌─ tmux path (fallback) ─────────────────────────────────────┐
   │ a) Use coding-agent Skill (recommended)                    │
   │ b) Use tmux-agents Skill (for Gemini/Codex)                │
   │ c) Direct exec:                                            │
   │    tmux new-session -d -s <task_id> -c ../worktrees/<id>  │
   │    tmux send-keys -t <task_id> "claude" Enter              │
   │    tmux send-keys -t <task_id> "<prompt + callback>" Enter │
   └────────────────────────────────────────────────────────────┘

5. Write MEMORY.md task entry (see §7)

6. Inform user
   → "Session <task_id> started, agent is working. Will notify on completion."

7. Wait for completion
   ACPX: [done] in ndjson stream → read result → route
   tmux: Callback arrives or 30min timeout → capture-pane → notify

Parallel tasks: Repeat the above for each task. ACPX natively supports named parallel sessions. Before creating PRs, check for file conflicts between branches with git diff --name-only.

Scenario B: Interactive Session (Human-in-the-Loop)

Trigger: "Start a session for API refactoring"

ACPX:
  exec: acpx prompt -s api-refactor "You are my coding assistant, await instructions."
  → Creates named session, agent enters wait state

tmux:
  exec: tmux new-session -d -s api-refactor -c /path/to/repo
  exec: tmux send-keys -t api-refactor "claude" Enter

Report to user:
  "Session api-refactor started. You can:
   • 'Tell api-refactor to start with interface definitions'
   • 'How is api-refactor doing?'
   • 'Stop api-refactor'"

Scenario C: Mid-Task Intervention (Full-Duplex Core)

Trigger: "Tell <session> to do Y" / "Change <session>'s direction"

ACPX (no timing issues, protocol-level isolation):
  Append instruction:  acpx prompt -s <session> --no-wait "Focus on interface definitions, skip DB layer"
  Cancel current:      acpx cancel -s <session>

tmux (watch for timing):
  Append instruction:  tmux send-keys -t <session> "Focus on interface definitions" Enter
  Interrupt current:   tmux send-keys -t <session> Escape
  Force stop:          tmux send-keys -t <session> C-c

Scenario D: Check Progress

Trigger: "How is <session> doing?" / "status"

ACPX:
  exec: acpx sessions show -s <session>
  → Structured session state, no ANSI stripping needed
  → Or use --format json for recent ndjson events

tmux:
  exec: tmux capture-pane -p -t <session> -S -20
  → Strip ANSI: sed 's/\x1b\[[0-9;]*[a-zA-Z]//g'
  → Summarize for user (don't paste raw terminal output)

List all sessions:
  ACPX: acpx sessions list
  tmux: tmux list-sessions

Scenario E: Agent Selection

ConditionRecommended AgentACPX Launchtmux Launch
Default / best codingClaude Codeacpx prompt -s X --agent claudecoding-agent Skill
Long context neededGemini CLIacpx prompt -s X --agent geminigemini Skill
Need CodexCodex CLIacpx prompt -s X --agent codextmux-agents Skill
Simple one-offDirect execNo session neededexec pty:true

ACPX-supported agent adapters:

  • Claude Code: npx @zed-industries/claude-agent-acp (adapter)
  • Codex CLI: npx @zed-industries/codex-acp (adapter)
  • Gemini CLI: gemini --experimental-acp (native support)

Scenario F: PR Creation

Trigger: [done] signal or Callback shows completed + tests pass

1. Independently verify tests (don't trust agent's self-report)
   → cd <worktree> && <auto-detect test runner>

2. Push branch
   → git push -u origin <branch>

3. Create PR
   → gh pr create --title "fix: <title>" --body "..." --base main --head <branch>

4. Update MEMORY.md: status=completed, add PR link

5. Notify user

Scenario G: Cleanup

ACPX:
  End session (history preserved in ~/.acpx/sessions/)
  → No need to kill processes, ACPX manages lifecycle

tmux:
  tmux kill-session -t <session>

Common:
  git worktree remove <dir> --force
  git branch -d <branch> (optional)
  Edit MEMORY.md: status → abandoned or completed

6. Structured Callback Protocol

ACPX Path

ACPX ndjson stream natively provides [done] signals, but we still inject the Callback JSON instruction for unified processing logic. The JSON can be extracted directly from the ndjson stream — no regex matching against terminal output.

tmux Path

Requires injection and detection of callback-json keyword via capture-pane.

Injection Content (Shared by Both Paths)

Append to the end of the agent prompt:

When you complete this task, you MUST output the following JSON block
wrapped in triple backticks with language tag "callback-json":

{
  "task_id": "<task_id>",
  "status": "completed|failed|need_clarification",
  "branch": "<branch>",
  "files_changed": ["file1.go", "file2_test.go"],
  "test_results": { "passed": 42, "failed": 0, "skipped": 1 },
  "duration_minutes": 12,
  "summary": "Brief description of what was done"
}

Commit your code and run tests BEFORE outputting this JSON. This is mandatory.

Routing Rules

ConditionYour Action
completed + failed=0Independently verify tests → create PR → notify user
completed + failed>0Append instruction: "N tests failing, please fix and re-output callback"
failedUpdate MEMORY.md → notify user of failure reason
need_clarificationForward summary to user, wait for reply, then send to agent

Pure if/else — no LLM interpretation of natural language needed.

Completion Detection Comparison

MethodACPXtmux
Primaryndjson [done] signalcoding-agent Skill built-in Callback
FallbackExtract callback-json from ndjsoncapture-pane regex matching
BackgroundN/A (stream is continuous)scripts/watchdog.sh

7. State Persistence

MEMORY.md Task Entry

## In-Flight Tasks

### add-pagination: Implement pagination for /api/users
- **Status**: in-progress
- **Branch**: feat/add-pagination
- **Session**: add-pagination
- **Backend**: ACPX | tmux
- **Agent**: Claude Code | Gemini CLI
- **Started**: 2026-03-10T14:30:00Z
- **Latest Milestone**: 14:42 - Running tests
- **Callback**: pending

When to Write

EventAction
Task createdAdd entry, status=pending
Agent startedstatus → in-progress, record backend type
User asks for progressUpdate Latest Milestone
Completion signal receivedstatus → completed/failed
PR createdAdd PR link
Cleanupstatus → completed/abandoned

MEMORY.md must be written under any backend — it is the only shared state across sessions and agents. ACPX session history is per-agent and does not share across sessions.


8. Crash Detection

ACPX Path

ACPX has built-in crash recovery — auto-restarts agent and loads serialized session. You only need to check if the session is still active:

acpx sessions list              # check if session exists
acpx sessions show -s <session> # check detailed status

If session disappeared (ACPX itself crashed), recover context from MEMORY.md and recreate.

tmux Path

tmux session survives but agent may have died:

tmux has-session -t <session> 2>/dev/null  # is session alive
tmux capture-pane -p -t <session> -S -1    # any output

Optional: scripts/watchdog.sh background loop (zero token).


9. Optional Helper Scripts

Three scripts in scripts/ with dual-backend support. You can use them but don't have to:

ScriptPurpose
setup.sh <task_id> <branch> <worktree_dir> [task_desc] [backend]Create branch + worktree + initialize MEMORY.md
launch.sh <task_id> <worktree_dir> <prompt_file> [backend] [agent]ACPX-first agent launch with auto tmux fallback
watchdog.sh [task_id]Background zero-token monitoring (ACPX/tmux aware)

Parameters:

  • backend: acpx (default if available) | tmux | auto
  • agent: claude | gemini | codex | aider | auto

10. Command Reference

ACPX Commands

ActionCommand
Send promptacpx prompt -s <name> "<text>"
Fire-and-forgetacpx prompt -s <name> --no-wait "<text>"
Structured outputacpx prompt -s <name> --format json "<text>"
Auto-approve permsacpx prompt -s <name> --approve-all "<text>"
List sessionsacpx sessions list
Show sessionacpx sessions show -s <name>
Cancel taskacpx cancel -s <name>

tmux Commands

ActionCommand
Create sessiontmux new-session -d -s <name> -c <dir>
Send instructiontmux send-keys -t <name> "<text>" Enter
Read outputtmux capture-pane -p -t <name> -S -30
List sessionstmux list-sessions
Send interrupttmux send-keys -t <name> C-c
Kill sessiontmux kill-session -t <name>

Common Commands

ActionCommand
Fetch issuegh issue view <N> --json title,body,labels
Create worktreegit worktree add <dir> -b <branch> main
Remove worktreegit worktree remove <dir>
Push branchgit push -u origin <branch>
Create PRgh pr create --title "..." --body "..." --base main --head <branch>

11. Relationship with Existing Skills

SkillBackendYour Usage
coding-agenttmuxPreferred agent launch for tmux fallback
tmuxtmuxLow-level operations (custom socket, wait-for-text)
tmux-agentstmuxMulti-agent types (Codex, Gemini, local models)
geminitmuxGemini CLI for long-context tasks
resilient-coding-agenttmuxGateway restart recovery

When using ACPX backend, these tmux-based Skills don't apply. Use acpx commands directly. When ACPX is unavailable, fall back to these Skills.


12. Evolution Roadmap

Phase 1 (Current): ACPX and tmux in parallel
  • New tasks prefer ACPX
  • ACPX instability → tmux fallback
  • Validate ACPX session persistence and crash recovery

Phase 2: High-value migration
  • Migrate half-duplex and context-pollution-heavy scenarios to ACPX
  • tmux demoted to visual monitoring only

Phase 3 (End state): ACPX as primary path
  • tmux optional (visual only)
  • ACPX becomes the standard interface for all agent communication

13. Important Notes

  1. ACPX stability: ACPX is still early-stage and may have breaking changes. Fall back to tmux immediately on issues.
  2. No PTY nesting: Do NOT start tmux inside exec pty:true (double PTY allocation)
  3. tmux send-keys timing: When agent is busy, send Escape first and wait for idle before appending
  4. Don't pull full logs: Use capture-pane -S -20, ACPX use --format json pipe
  5. Security: Never pass API keys or secrets via send-keys or acpx prompt
  6. ACPX permissions: Use --approve-all for unattended; --approve-reads when security matters
  7. Context pollution: ACPX ndjson can pipe to external monitoring without entering Context; tmux capture-pane is zero-token

14. User Command Mapping

User SaysWhat You Do
"Implement feature X for project Y"Scenario A: understand requirement → create task → start agent
"Investigate this performance issue"Scenario A: analyze problem → create investigation task
"Do these three tasks in parallel"Scenario A × N (parallel named sessions)
"Fix issue #78" (optional)Scenario A: fetch issue description
"Start a session for X"Scenario B: interactive
"Tell <session> to do Y"Scenario C: acpx prompt / tmux send-keys
"How is <session> doing?"Scenario D: acpx sessions show / capture-pane
"Use Gemini for this task"Scenario E: acpx --agent gemini / gemini Skill
"Create PR"Scenario F
"Stop <session>" / "cleanup"Scenario G
"status"List all sessions + MEMORY.md in-flight tasks
"retry <task>"Scenario G cleanup + Scenario A restart

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 Agent Builder

快速构建和部署支持多工具集成与记忆管理的自定义 AI Agent,适用于客服、数据采集和研究自动化。

Registry SourceRecently Updated
Automation

GolemedIn MCP

Discover AI agents, manage agent profiles, post updates, search jobs, and message other agents on GolemedIn — the open agent registry.

Registry SourceRecently Updated
Automation

Agent HQ

Deploy the Agent HQ mission-control stack (Express + React + Telegram notifier / Jarvis summary) so other Clawdbot teams can spin up the same board, high-priority watcher, and alert automation. Includes setup, telemetry, and automation hooks.

Registry SourceRecently Updated
41.1K
Profile unavailable