* chore: add bug-triage skill for agent-driven issue triage Add .skills/bug-triage/ with SKILL.md and push_fix_to_github.py script. The skill provides a complete triage workflow: - Gather bug context from chat/issues/live observation - Search for duplicate GitHub issues - File well-structured issues with root cause analysis - Push fix PRs via GitHub API (no local checkout needed) - Git archaeology (git log -S) for regression tracking - NPM package regression diffing - Remote code inspection without local clone Reference the skill in AGENTS.md so any agent working on this repo can discover and follow the triage workflow automatically. Tested across 100+ real bug triages on ComposioHQ/agent-orchestrator. * chore: add clickable issue/PR links as real-world examples Add concrete examples with links to actual issues and PRs: - #1129: deep diagnosis vs surface-level triage - #1151: placeholder URL RCA - #1391: CSS regression via git log -S archaeology - PR #1523: optional TypeScript interface fields - PR #1608: npm package regression diffing * chore: add formatting rule — always linkify issue/PR references Any agent following this skill must include clickable URLs when mentioning issues or PRs. Bare '#123' without links is not allowed. * fix: address review feedback — use existing skills/ dir, fix bugs - Move .skills/ → skills/ (repo already has a skills/ directory) - Fix label name: 'priority:medium' → 'priority: medium' (with space) - Fix issue-assets branch naming: use slug instead of issue number (issue doesn't exist yet at upload time) - Fix base64 command: portable across Linux and macOS (tr -d '\n') - push_fix_to_github.py: allow empty NEW_STRING for deletion edits - push_fix_to_github.py: warn on multiple OLD_STRING matches - push_fix_to_github.py: create branch before fetching file (SHA race) - push_fix_to_github.py: configurable BASE_BRANCH (not hardcoded main) - Update all path references in AGENTS.md and SKILL.md * fix: correct stale .skills/ path in AGENTS.md How to load section * feat: add cross-platform triage awareness (Windows/macOS/Linux) Add Step 1b covering: - When to ask for OS/shell/runtime/reproducibility - Common Windows-specific bug patterns (paths, shell syntax, ConPTY, named pipes, NTFS case-insensitivity, localhost IPv6 stalls) - Key cross-platform files (platform.ts, CROSS_PLATFORM.md, etc.) - Tagging OS-specific issues with 'to-reproduce' Based on the actual Windows support implementation in #1025 (platform.ts, runtime-process, CROSS_PLATFORM.md). * feat: add 6 triage improvements from real failure patterns 1. Environment Info Collection (Step 1): - Standard template: OS, shell, runtime, AO version, Node version, install method - Prevents wasted time tracing wrong code versions 2. Duplicate Search Strategy (Step 2): - Search by symptom, component, AND error message - Always search --state all (open + closed — bugs regress) - Check PRs too (fixes sometimes land without issues) 3. Stop-and-Ask Triggers (Step 1c): - Explicit criteria: 3 failed hypotheses, can't reproduce, upstream bug, UI-only bug without screenshot, unknown environment - Includes template for asking the reporter 4. Pre-Submission Checklist (Step 4.1b): - Reporter attribution, commit hash, AO version, confidence score, cross-links, concrete reproduction steps, screenshots ready - Verify all before creating the issue 5. Confidence Scoring (Step 4.4): - High/Medium/Low with clear criteria - Maps to labels: bug only / to-explore / to-reproduce - Example from PR #1608 where high confidence was wrong 6. Cross-Linking Related Issues (Step 4.5): - Search by subsystem after filing - Include Related section with one-line descriptions - Helps maintainers see patterns across issues 7. Subsystem-Specific Triage Quick Reference: - Table mapping subsystems to required info and key files - Common misrouting patterns (terminal, stuck session, config) * feat: add report gate, local diagnostics with ao events, deduplicate New sections: - Step 0a: Platform-specific context gathering (Discord/Slack/GitHub/live) - Step 0b: Minimum Viable Report Gate — required fields (what/where/when) plus 2-of-4 supporting (OS, version, reproducibility, steps) - Step 0c: Local Diagnostics — auto-gather environment, process health, AO event log (ao events list/search/stats), session state files, reproducibility testing. Covers ao events commands with all flags. Deduplication: - Step 1b: removed repeated OS/shell/runtime questions (now in Step 1.2) - Step 1c: removed 'environment unknown' and 'can't reproduce' triggers (covered by report gate in Step 0b) * refactor: compress bug-triage skill from 575→311 lines Merge overlapping sections (Steps 0/0b/0c/1 → single Gather+Investigate flow), move reference material to Appendix, deduplicate pitfalls, compress code blocks. All factual content preserved: commands, file paths, labels, examples, links. * docs: add skills/ README with agent-specific install instructions Covers Claude Code, Codex CLI, Cursor, Windsurf, Copilot, Gemini CLI, and Agent Orchestrator. Includes available skills table and how to write new skills. * docs: add Skills section to CLAUDE.md referencing skills/ directory Links all 4 skills with when-to-load guidance, plus pointer to skills/README.md for installing into other agents. * fix: resolve PR review comments — remove Hermes-specific refs, portable base64 - Replace execute_code references with agent-agnostic 'Python script' wording - Replace base64 -d (Linux-only) with python3 -c (portable across macOS/Linux/Windows) --------- Co-authored-by: AO Bot <ao-bot@composio.dev> |
||
|---|---|---|
| .changeset | ||
| .cursor | ||
| .github | ||
| .husky | ||
| .issue-assets | ||
| artifacts | ||
| changelog | ||
| completions | ||
| docs | ||
| examples | ||
| handoff/pr-1466 | ||
| openclaw-plugin | ||
| packages | ||
| schema | ||
| scripts | ||
| skills | ||
| tests/integration | ||
| website | ||
| .eslintignore | ||
| .gitignore | ||
| .gitleaks.toml | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| ARCHITECTURE.md | ||
| CLAUDE.md | ||
| CONTRIBUTING.md | ||
| DESIGN.md | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| SETUP.md | ||
| TROUBLESHOOTING.md | ||
| agent-orchestrator.yaml.example | ||
| eslint.config.js | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| tsconfig.base.json | ||
| tsconfig.node.json | ||
README.md
Agent Orchestrator — The Orchestration Layer for Parallel AI Agents
Spawn parallel AI coding agents, each in its own git worktree. Agents autonomously fix CI failures, address review comments, and open PRs — you supervise from one dashboard.
Agent Orchestrator manages fleets of AI coding agents working in parallel on your codebase. Each agent gets its own git worktree, its own branch, and its own PR. When CI fails, the agent fixes it. When reviewers leave comments, the agent addresses them. You only get pulled in when human judgment is needed.
Agent-agnostic (Claude Code, Codex, Aider) · Runtime-agnostic (tmux, ConPTY/process, Docker) · Tracker-agnostic (GitHub, Linear)
Quick Start
Prerequisites: Node.js 20+, Git 2.25+,
ghCLI, and:
- macOS / Linux: tmux — install via
brew install tmuxorsudo apt install tmux.- Windows: PowerShell 7+ recommended. tmux is not required — AO uses native ConPTY via the
runtime-processplugin (the default on Windows). SetAO_SHELL=bashif you have Git Bash and prefer it.
Install
npm install -g @aoagents/ao
Permission denied? Install from source?
If npm install -g fails with EACCES, prefix with sudo or fix your npm permissions.
To install from source (for contributors):
git clone https://github.com/ComposioHQ/agent-orchestrator.git
cd agent-orchestrator && bash scripts/setup.sh
Zsh Completion
Generate the completion file from the installed CLI:
mkdir -p ~/.zsh/completions
ao completion zsh > ~/.zsh/completions/_ao
Then make sure the directory is on your fpath before compinit runs:
fpath=(~/.zsh/completions $fpath)
autoload -Uz compinit
compinit
For Oh My Zsh, install the same generated file into a custom plugin directory and add ao to your plugin list:
mkdir -p "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ao"
ao completion zsh > "${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ao/_ao"
If you are contributing from a source checkout, you can also symlink the repo copy at completions/_ao.
Start
Point it at any repo — it clones, configures, and launches the dashboard in one command:
ao start https://github.com/your-org/your-repo
Or from inside an existing local repo:
cd ~/your-project && ao start
That's it. The dashboard opens at http://localhost:3000 and the orchestrator agent starts managing your project.
Add more projects
ao start ~/path/to/another-repo
How It Works
- You start —
ao startlaunches the dashboard and an orchestrator agent - Orchestrator spawns workers — each issue gets its own agent in an isolated git worktree
- Agents work autonomously — they read code, write tests, create PRs
- Reactions handle feedback — CI failures and review comments are automatically routed back to the agent
- You review and merge — you only get pulled in when human judgment is needed
The orchestrator agent uses the AO CLI internally to manage sessions. You don't need to learn or use the CLI — the dashboard and orchestrator handle everything.
Configuration
ao start auto-generates agent-orchestrator.yaml with sensible defaults. You can edit it afterwards to customize behavior:
# agent-orchestrator.yaml
$schema: https://raw.githubusercontent.com/ComposioHQ/agent-orchestrator/main/schema/config.schema.json
# Runtime data is auto-derived under ~/.agent-orchestrator/{hash}-{projectId}/
port: 3000
defaults:
runtime: tmux # default on macOS / Linux; on Windows the default is `process` (ConPTY)
agent: claude-code
workspace: worktree
notifiers: [desktop]
projects:
my-app:
repo: owner/my-app
path: ~/my-app
defaultBranch: main
sessionPrefix: app
reactions:
ci-failed:
auto: true
action: send-to-agent
retries: 2
changes-requested:
auto: true
action: send-to-agent
escalateAfter: 30m
approved-and-green:
auto: false # flip to true for auto-merge
action: notify
CI fails → agent gets the logs and fixes it. Reviewer requests changes → agent addresses them. PR approved with green CI → you get a notification to merge.
Keep the $schema line so editors can autocomplete and validate against schema/config.schema.json.
See agent-orchestrator.yaml.example for the full reference, or run ao config-help for the complete schema.
Remote Access
AO keeps your Mac awake while running, so you can access the dashboard remotely (e.g., via Tailscale from your phone) without the machine going to sleep.
How it works: On macOS, AO automatically holds an idle-sleep prevention assertion using caffeinate. When AO exits, the assertion is released.
# agent-orchestrator.yaml
$schema: https://raw.githubusercontent.com/ComposioHQ/agent-orchestrator/main/schema/config.schema.json
power:
preventIdleSleep: true # Default on macOS; no-op on Linux and Windows
Set to false if you want to allow idle sleep while AO runs.
Lid-close limitation: macOS enforces lid-close sleep at the hardware level — no userspace assertion can override it. If you need remote access while traveling with the lid closed, use clamshell mode (external power + display + input device).
Linux / Windows: AO does not currently hold a wake assertion on these platforms. On Linux, idle-sleep behaviour is governed by your desktop environment / systemd-logind; configure that directly. On Windows, set the OS power plan if remote access matters while idle.
Plugin Architecture
Seven plugin slots. Lifecycle stays in core.
| Slot | Default | Alternatives |
|---|---|---|
| Runtime | tmux (macOS/Linux) / process (Windows) | process, docker |
| Agent | claude-code | codex, aider, cursor, opencode, kimicode |
| Workspace | worktree | clone |
| Tracker | github | linear, gitlab |
| SCM | github | gitlab |
| Notifier | desktop | slack, discord, composio, webhook, openclaw |
| Terminal | iterm2 | web |
All interfaces defined in packages/core/src/types.ts. A plugin implements one interface and exports a PluginModule. That's it.
Why Agent Orchestrator?
Running one AI agent in a terminal is easy. Running 30 across different issues, branches, and PRs is a coordination problem.
Without orchestration, you manually: create branches, start agents, check if they're stuck, read CI failures, forward review comments, track which PRs are ready to merge, clean up when done.
With Agent Orchestrator, you: ao start and walk away. The system handles isolation, feedback routing, and status tracking. You review PRs and make decisions — the rest is automated.
Documentation
| Doc | What it covers |
|---|---|
| Setup Guide | Detailed installation, configuration, and troubleshooting |
| CLI Reference | All ao commands (mostly used by the orchestrator agent) |
| Examples | Config templates (GitHub, Linear, multi-project, auto-merge) |
| Development Guide | Architecture, conventions, plugin pattern |
| Contributing | How to contribute, build plugins, PR process |
Development
pnpm install && pnpm build # Install and build all packages
pnpm test # Run tests (3,288 test cases)
pnpm dev # Start web dashboard dev server
See docs/DEVELOPMENT.md for code conventions and architecture details.
Contributing
Contributions welcome. The plugin system makes it straightforward to add support for new agents, runtimes, trackers, and notification channels. Every plugin is an implementation of a TypeScript interface — see CONTRIBUTING.md and the Development Guide for the pattern.
License
MIT