Basic Agent Workflow
Complete workflow for a single agent session:#!/bin/bash
# Set actor identity
export TRACE_ACTOR="claude-1"
# 1. Check for ready work
WORK=$(tracer ready --limit 1 --json)
if [ "$(echo $WORK | jq length)" -eq 0 ]; then
echo "No ready work found"
exit 0
fi
# 2. Get issue details
ISSUE_ID=$(echo $WORK | jq -r '.[0].id')
ISSUE_TITLE=$(echo $WORK | jq -r '.[0].title')
echo "Working on: $ISSUE_ID - $ISSUE_TITLE"
# 3. Claim the work
tracer update $ISSUE_ID --status in_progress
tracer comment $ISSUE_ID "Starting work on this issue"
# 4. Do the work...
# (your implementation here)
# 5. Discover new work during execution
if [ "$FOUND_BUG" = "true" ]; then
BUG_ID=$(tracer create "Fix discovered issue" -t bug -p 0 --json | jq -r '.id')
tracer dep add $BUG_ID $ISSUE_ID --type discovered-from
tracer comment $BUG_ID "Found while working on $ISSUE_ID"
fi
# 6. Complete the work
tracer comment $ISSUE_ID "Work complete, all tests passing"
tracer close $ISSUE_ID --reason "Implemented and tested"
# 7. Show stats
tracer stats
Multi-Agent Coordination
Script for coordinating three agents working in parallel:#!/bin/bash
# Initialize project
tracer init
# Create initial work
tracer create "Implement auth API" -p 1 -t feature
tracer create "Write auth tests" -p 1 -t task
tracer create "Update documentation" -p 2 -t task
# Set up dependencies
tracer dep add bd-2 bd-1 --type blocks
tracer dep add bd-3 bd-1 --type blocks
# Agent 1: Work on API
export TRACE_ACTOR="claude-1"
tracer update bd-1 --status in_progress
tracer comment bd-1 "Starting JWT implementation"
# Agent 2: Check what's available
export TRACE_ACTOR="cursor-2"
READY=$(tracer ready --json)
echo "Agent 2 sees: $(echo $READY | jq -r '.[].id')" # Nothing - blocked by bd-1
# Agent 2: Monitor bd-1
tracer show bd-1
tracer comment bd-1 "Will start tests once API is ready"
# Agent 1: Complete API work
export TRACE_ACTOR="claude-1"
tracer comment bd-1 "JWT implementation complete"
tracer close bd-1 --reason "API implemented and unit tested"
# Agent 2: Now sees unblocked work
export TRACE_ACTOR="cursor-2"
tracer ready --json | jq -r '.[].id' # bd-2 and bd-3 now ready
tracer update bd-2 --status in_progress
tracer comment bd-2 "Starting integration tests"
# Agent 3: Pick up documentation
export TRACE_ACTOR="gpt-4"
tracer update bd-3 --status in_progress
tracer comment bd-3 "Updating API documentation"
# Show overall status
tracer list --status in_progress
Epic Creation with Subtasks
Break down a large feature into coordinated subtasks:#!/bin/bash
export TRACE_ACTOR="project-coordinator"
# Create epic
EPIC=$(tracer create "User authentication system" -t epic -p 0 --json | jq -r '.id')
echo "Created epic: $EPIC"
# Create child tasks
T1=$(tracer create "Design auth schema" -t task -p 1 --json | jq -r '.id')
tracer dep add $T1 $EPIC --type parent-child
tracer comment $T1 "First step: design the database schema"
T2=$(tracer create "Implement login endpoint" -t task -p 1 --json | jq -r '.id')
tracer dep add $T2 $EPIC --type parent-child
tracer dep add $T2 $T1 --type blocks # T2 blocked by T1
tracer comment $T2 "Depends on schema design"
T3=$(tracer create "Add session management" -t task -p 1 --json | jq -r '.id')
tracer dep add $T3 $EPIC --type parent-child
tracer dep add $T3 $T1 --type blocks # T3 blocked by T1
tracer comment $T3 "Depends on schema design"
T4=$(tracer create "Implement password reset" -t task -p 2 --json | jq -r '.id')
tracer dep add $T4 $EPIC --type parent-child
tracer dep add $T4 $T2 --type blocks # T4 blocked by T2
tracer comment $T4 "Can start after login endpoint is done"
# Show the dependency tree
echo "
Dependency tree:"
tracer dep tree $EPIC
# Show what's ready to work on
echo "
Ready to start:"
tracer ready
Discovering and Filing Issues
Agent discovers issues while working:#!/bin/bash
export TRACE_ACTOR="claude-1"
# Start on assigned work
tracer update bd-5 --status in_progress
tracer comment bd-5 "Starting implementation"
# Discover a bug during work
BUG=$(tracer create "Fix null pointer in validation" -t bug -p 0 --json | jq -r '.id')
tracer dep add $BUG bd-5 --type discovered-from
tracer comment $BUG "Found while implementing bd-5"
tracer comment bd-5 "Discovered $BUG - needs fixing before completion"
# Fix the bug first
tracer update $BUG --status in_progress
tracer comment $BUG "Fixing null check in validator.rs:145"
# ... do the fix ...
tracer close $BUG --reason "Added null check"
# Continue original work
tracer comment bd-5 "Bug fixed, continuing with implementation"
# ... complete the work ...
tracer close bd-5 --reason "Implementation complete"
Handoff Between Agents
One agent requests help from another:#!/bin/bash
# Agent 1 hits a blocker
export TRACE_ACTOR="claude-1"
tracer update bd-7 --status blocked
tracer comment bd-7 "Stuck on OAuth2 implementation - need help with refresh tokens"
# Agent 2 sees the request and responds
export TRACE_ACTOR="cursor-2"
tracer show bd-7
tracer comment bd-7 "I can help with OAuth. Creating a subtask."
# Agent 2 creates related work
OAUTH=$(tracer create "Implement OAuth2 refresh token flow" -t task -p 0 --json | jq -r '.id')
tracer dep add $OAUTH bd-7 --type related
tracer update $OAUTH --status in_progress
tracer comment $OAUTH "Working on refresh token logic"
# Agent 2 completes the OAuth work
tracer comment $OAUTH "Refresh tokens implemented in auth/oauth.rs"
tracer close $OAUTH --reason "OAuth refresh flow complete"
# Agent 2 notifies Agent 1
tracer comment bd-7 "OAuth refresh tokens done in $OAUTH - you can unblock now"
# Agent 1 sees the notification and continues
export TRACE_ACTOR="claude-1"
tracer show bd-7
tracer update bd-7 --status in_progress
tracer comment bd-7 "Thanks! Integrating OAuth refresh tokens now"
Checking for Active Work
Script to avoid conflicts by checking assignees:#!/bin/bash
export TRACE_ACTOR="cursor-2"
function claim_work() {
local issue_id=$1
# Check if someone is already working on it
local assignee=$(tracer show $issue_id --json | jq -r '.assignee')
local status=$(tracer show $issue_id --json | jq -r '.status')
if [ "$status" = "in_progress" ] && [ "$assignee" != "" ] && [ "$assignee" != "$TRACE_ACTOR" ]; then
echo "Warning: $issue_id is already assigned to $assignee"
echo "Skipping..."
return 1
fi
# Claim the work
tracer update $issue_id --status in_progress
tracer comment $issue_id "Starting work on this issue"
echo "Claimed $issue_id"
return 0
}
# Try to claim work from ready list
READY=$(tracer ready --json | jq -r '.[].id')
for issue in $READY; do
if claim_work $issue; then
echo "Working on $issue"
break
fi
done
Batch Operations
Close multiple related issues at once:#!/bin/bash
export TRACE_ACTOR="claude-1"
# Complete a sprint - close all P0 bugs
BUGS=$(tracer list --type bug --priority 0 --status in_progress --json | jq -r '.[].id')
if [ -z "$BUGS" ]; then
echo "No P0 bugs to close"
exit 0
fi
echo "Closing bugs: $BUGS"
# Close all at once
tracer close $BUGS --reason "Sprint complete - all P0 bugs fixed"
# Add summary comment to each
for bug in $BUGS; do
tracer comment $bug "Closed as part of P0 bug sprint"
done
echo "Closed $(echo $BUGS | wc -w) bugs"
tracer stats
Priority-Based Work Selection
Agent picks highest priority work:#!/bin/bash
export TRACE_ACTOR="claude-1"
# Check for ready work, prioritizing P0, then P1, then P2
for priority in 0 1 2; do
WORK=$(tracer ready --priority $priority --limit 1 --json)
if [ "$(echo $WORK | jq length)" -gt 0 ]; then
ISSUE_ID=$(echo $WORK | jq -r '.[0].id')
ISSUE_TITLE=$(echo $WORK | jq -r '.[0].title')
echo "Found P$priority work: $ISSUE_ID - $ISSUE_TITLE"
tracer update $ISSUE_ID --status in_progress
tracer comment $ISSUE_ID "Starting work (P$priority)"
# Do the work...
exit 0
fi
done
echo "No ready work found at any priority"
Monitoring Progress
Script to monitor and report progress:#!/bin/bash
function show_progress() {
echo "=== Tracer Progress Report ==="
echo ""
# Overall stats
echo "Overall Statistics:"
tracer stats
echo ""
# Work in progress by assignee
echo "In Progress by Assignee:"
for agent in claude-1 cursor-2 gpt-4; do
count=$(tracer list --assignee $agent --status in_progress --json | jq '. | length')
if [ $count -gt 0 ]; then
echo " $agent: $count issues"
tracer list --assignee $agent --status in_progress --json | jq -r '.[] | " - \(.id): \(.title)"'
fi
done
echo ""
# Blocked issues
BLOCKED=$(tracer list --status blocked --json | jq '. | length')
if [ $BLOCKED -gt 0 ]; then
echo "Blocked Issues: $BLOCKED"
tracer list --status blocked --json | jq -r '.[] | " \(.id): \(.title) (Assignee: \(.assignee))"'
echo ""
fi
# Ready work
READY=$(tracer ready --json | jq '. | length')
echo "Ready to Work: $READY issues"
if [ $READY -gt 0 ]; then
tracer ready --limit 5 --json | jq -r '.[] | " \(.id): \(.title) [P\(.priority)]"'
fi
}
show_progress
CI/CD Integration
Create issues from test failures:#!/bin/bash
export TRACE_ACTOR="ci-bot"
# Run tests and capture failures
if ! cargo test 2>&1 | tee test_output.txt; then
echo "Tests failed - filing issues"
# Parse test failures
FAILED_TESTS=$(grep "test result: FAILED" test_output.txt -A 100 | grep "test.*FAILED" | awk '{print $2}')
for test in $FAILED_TESTS; do
# Check if issue already exists
EXISTING=$(tracer list --json | jq -r ".[] | select(.title == \"Test failure: $test\") | .id")
if [ -z "$EXISTING" ]; then
# Create new issue
ISSUE=$(tracer create "Test failure: $test" -t bug -p 0 --json | jq -r '.id')
tracer comment $ISSUE "Failed in CI build #${BUILD_NUMBER}"
echo "Created issue $ISSUE for failed test: $test"
else
# Update existing issue
tracer comment $EXISTING "Still failing in build #${BUILD_NUMBER}"
echo "Updated existing issue $EXISTING for test: $test"
fi
done
fi
Complete Multi-Agent Session
Full session with three agents from AGENTS.md:#!/bin/bash
# Initialize project
tracer init
# Create issues
tracer create "Implement user authentication" -p 1 -t feature
tracer create "Write authentication tests" -p 1 -t task
tracer create "Add password reset flow" -p 2 -t feature
tracer dep add bd-2 bd-1 --type blocks
tracer dep add bd-3 bd-1 --type blocks
# === Agent 1 Session ===
export TRACE_ACTOR="claude-1"
echo "Agent 1: Checking ready work"
tracer ready --limit 3
echo "Agent 1: Starting on bd-1"
tracer update bd-1 --status in_progress
tracer comment bd-1 "Working on JWT implementation"
# Simulate work...
sleep 2
echo "Agent 1: Completing bd-1"
tracer comment bd-1 "API complete, ready for testing"
tracer close bd-1 --reason "Implementation done"
# === Agent 2 Session ===
export TRACE_ACTOR="cursor-2"
echo "Agent 2: Checking ready work"
tracer ready
echo "Agent 2: bd-2 is now unblocked"
tracer update bd-2 --status in_progress
tracer comment bd-2 "Starting tests for the new API"
# Simulate work...
sleep 2
echo "Agent 2: Completing bd-2"
tracer close bd-2 --reason "All tests passing"
# === Agent 3 Session ===
export TRACE_ACTOR="gpt-4"
echo "Agent 3: Checking ready work"
tracer ready
echo "Agent 3: Starting on bd-3"
tracer update bd-3 --status in_progress
tracer comment bd-3 "Implementing password reset with email verification"
# Discover new work
NEW=$(tracer create "Add email template for password reset" -t task -p 1 --json | jq -r '.id')
tracer dep add $NEW bd-3 --type discovered-from
tracer comment $NEW "Needed for password reset flow"
echo "Agent 3: Working on discovered issue $NEW"
tracer update $NEW --status in_progress
# Simulate work...
sleep 2
tracer close $NEW --reason "Email template created"
tracer close bd-3 --reason "Password reset flow complete"
# === Final Report ===
echo "
=== Final Project Status ==="
tracer stats
echo "
=== All Issues ==="
tracer list --json | jq -r '.[] | "\(.id): \(.title) [\(.status)]"'
Next Steps
Continuous Integration
Learn how to use Tracer in CI/CD pipelines
Multi-Agent Coordination
Review the coordination patterns