agency
tobias-walle/agencyUse Agency CLI to run parallel AI coding tasks in isolated Git worktrees. Invoke when user mentions "agency", "ag", parallel tasks, worktrees, or wants to run multiple coding agents simultaneously.
SKILL.md
name: agency description: Use Agency CLI to run parallel AI coding tasks in isolated Git worktrees. Invoke when user mentions "agency", "ag", parallel tasks, worktrees, or wants to run multiple coding agents simultaneously.
Agency CLI
Agency is a command-line AI agent orchestrator that runs coding agents in isolated Git worktrees with tmux-managed sessions.
Essential Commands
Create and Start a Task
agency new <slug> # Create task, start session, attach immediately
ag new <slug> # Short alias
agency new <slug> -e # Open editor to write task description
agency new <slug> -f spec.pdf # Attach a file during creation
agency new <slug> -f a.png -f b.pdf # Attach multiple files
# Provide description inline (use heredoc for multi-line)
agency new <slug> <<'EOF'
Your task description here.
Can span multiple lines without escaping issues.
EOF
Create a Draft (No Session Yet)
agency new --draft <slug> # Create task file only, no worktree or session
agency start <slug> # Start the draft (creates worktree and session)
Note: The "
List Tasks
agency tasks # Show all tasks with status, commits, and changes
ag tasks # Short alias
Output columns: ID, SLUG, STATUS, UNCOMMITTED, COMMITS, BASE, AGENT
Status codes:
- Draft - Task file exists but not started (no worktree or session created yet)
- Stopped - Worktree exists but session is not running (can be restarted with
agency start) - Running - Agent is actively processing/generating output
- Idle - Session exists but agent is waiting for input (task may be complete or paused)
- Exited - Session has terminated (agent finished or crashed)
Merge and Cleanup
agency merge <slug> # Merge task branch into base, then cleanup
This command:
- Rebases task branch onto base branch
- Fast-forward merges into base
- Deletes the worktree
- Deletes the task branch
- Removes the task file
Stop Without Merging
agency stop <slug> # Stop session, keep worktree and branch
Delete a Task
agency rm --yes <slug> # Remove task file, worktree, and branch
agency reset <slug> # Reset worktree and branch, keep task file
Use rm when you want to completely delete a task without merging changes. Use reset if you want to start over but keep the task description.
Attach Files to Tasks
Files can be attached to a task to provide additional context.
agency new <slug> -f path/to/file.pdf # Attach file during creation
agency files add <slug> path/to/file # Add file to existing task
agency files add <slug> --from-clipboard # Paste image from clipboard
agency files list <slug> # List attached files
agency files rm <slug> <file-id> # Remove a file
agency info # Show task context and files (inside session)
When files are attached, agents can run agency info to get the context. Files are accessible insie task worktrees via .agency/local/files/.
You SHOULD attach files when:
- The user mentions relevant files associated with the task
- You have created plans, specifications, or design documents that are not committed to the repository
- There are screenshots, diagrams, or reference materials relevant to the task
- The task requires context that exists outside the codebase
Example: If you created a markdown plan and want to delegate work to multiple agency tasks, attach that plan to each task so the spawned agents have the full context.
When to Use Parallel Tasks
Only run tasks in parallel if they are truly independent. Tasks that modify the same files or depend on each other's output will cause merge conflicts or broken code.
Good candidates for parallel tasks:
- Features in completely separate parts of the codebase
- Independent bug fixes in different modules
- Adding tests for unrelated functionality
Do NOT run in parallel:
- Task B depends on Task A's output (run sequentially instead)
- Tasks that modify the same files or modules
- Refactoring that touches shared code
When in doubt, run tasks sequentially. Merge conflicts are painful to resolve and waste more time than running tasks one after another.
Quick Workflow Example
# Create multiple parallel tasks
agency new --draft feature-auth <<'EOF'
Implement user authentication
EOF
agency new --draft feature-api <<'EOF'
Build REST API endpoints
EOF
agency new --draft fix-tests <<'EOF'
Fix failing unit tests
EOF
# Start all tasks
agency start --no-attach feature-auth
agency start --no-attach feature-api
agency start --no-attach fix-tests
# Or start tasks on creation
agency new --no-attach feature-auth <<'EOF'
Implement user authentication
EOF
agency new --no-attach feature-api <<'EOF'
Build REST API endpoints
EOF
agency new --no-attach fix-tests <<'EOF'
Fix failing unit tests
EOF
# Check status
agency tasks
# When done, merge back
agency merge feature-auth
Sandboxing
CRITICAL: ALL agency commands MUST be run outside the sandbox.
If you are running in a sandbox you will get errors like run/agency-tmux.sock (Operation not permitted).
IMPORTANT: Despite the error message, this is not because the daemon is not started. It is because the sandbox cannot access the tmux socket file. You MUST run ALL agency commands outside the sandbox:
- agency new ...
- agency start ...
- agency stop ...
- agency tasks ...
- agency merge ...
- agency rm ...
- agency reset ...
- ALL other agency commands
More Information
Run agency --help for the full command reference.