The Problem: AI Agents Working in Silos
- Before Task Orchestration
- After Task Orchestration
Your AI agents create chaos:
- Claude starts refactoring
AuthController.php - Cursor simultaneously adds OAuth to
AuthController.php - Merge conflict after 2 hours of work
- No one knows who’s working on what
- Features get implemented in wrong order
- 3 hours lost per conflict
Status Workflow
Valid Status Transitions
ULPI Tasks enforces a state machine to prevent invalid task states:📝 todo → in_progress
📝 todo → in_progress
When: Agent starts working on a taskExample:Use case:Why it matters:
- Signals to other agents: “I’m working on this, don’t touch it”
- Tracks actual start time for metrics
- Prevents duplicate work
🔄 in_progress → in_review
🔄 in_progress → in_review
When: Work is done, needs reviewExample:Use case:Why it matters:
- Separates “done coding” from “fully complete”
- Allows for code review step
- Tracks review cycle time
✅ in_review → completed
✅ in_review → completed
When: Review passed, task is doneExample:Use case:Why it matters:
- Unblocks dependent tasks automatically
- Finalizes metrics (completion time, actual hours)
- Provides closure and visibility
🚫 in_progress → blocked
🚫 in_progress → blocked
When: Can’t continue due to external dependencyExample:Use case:Why it matters:
- Prevents agents from waiting indefinitely
- Makes blockers visible
- Allows agent to work on other tasks
🔙 in_review → in_progress
🔙 in_review → in_progress
When: Review found issues, need reworkExample:Use case:Why it matters:
- Clear signal: work isn’t done yet
- Maintains review cycle integrity
- Tracks rework time separately
❌ todo/in_progress/blocked → cancelled
❌ todo/in_progress/blocked → cancelled
When: Task is no longer neededExample:Use case:Why it matters:
- Prevents incomplete tasks from cluttering the backlog
- Preserves work history (soft delete)
- Frees up resources/quota
Task Dependencies
Prevent work on tasks that will be blocked or cause conflicts.Dependency Types
- blocks
- relates_to
Definition: Task A blocks Task B = Task B cannot be completed until Task A is doneExample:Real-world scenario:Enforcement:
Auto-unblocking: When you complete BACKEND-051, ULPI automatically changes BACKEND-052 status from
blocked → todo (ready to start)Creating Dependencies
🔗 Add Dependency
🔗 Add Dependency
Command:Programmatic (MCP):Result:
🔓 Remove Dependency
🔓 Remove Dependency
When: Dependency is no longer neededCommand:Result:
🔍 View Dependencies
🔍 View Dependencies
See what’s blocking a task:See what a task blocks:
🚨 Circular Dependency Prevention
🚨 Circular Dependency Prevention
ULPI automatically prevents circular dependencies:Why it matters:
- Prevents deadlock situations
- Ensures tasks can actually be completed
- Maintains workflow integrity
Multi-Agent Coordination Patterns
Pattern 1: Feature Decomposition
Break a large feature into sequenced tasks for multiple agents.- Scenario
- Task Structure
- Execution Flow
- Benefits
Feature: Implement complete OAuth2 authenticationTeam:
- Claude Desktop (backend specialist)
- Cursor (frontend specialist)
- Windsurf (testing specialist)
Pattern 2: Bug Triage Workflow
Coordinate bug fixes across multiple agents with priority handling.- Setup
- Triage (Hour 1)
- Execution (Hours 2-48)
- Tracking
Team:
- Claude (backend bugs)
- Cursor (frontend bugs)
- Windsurf (testing/verification)
Pattern 3: Parallel Feature Development
Multiple agents work on independent features simultaneously.- Scenario
- Task Breakdown
- Week Timeline
- Coordination Magic
Goal: Ship 3 features in 1 weekFeatures:
- User roles & permissions (backend + frontend)
- Email notification system (backend only)
- Dashboard redesign (frontend only)
- Claude (backend)
- Cursor (frontend)
- Windsurf (QA)
Advanced Orchestration Techniques
🎯 Epic Tasks (Grouping)
🎯 Epic Tasks (Grouping)
Use case: Group related tasks under a parent epicExample:Track epic progress:
Pro tip: Use task type
epic and store sub-task references in metadata.subtasks array🔄 Automatic Dependency Resolution
🔄 Automatic Dependency Resolution
Let AI agents infer and create dependencies automatically.Example:Why it works:
- AI understands natural order (DB → API → UI → Tests)
- Automatically creates
blocksdependencies - Prevents manual dependency management
📊 Capacity Planning
📊 Capacity Planning
Balance workload across multiple agents.Query:Auto-assignment by capacity:
⏰ Due Date Enforcement
⏰ Due Date Enforcement
Prioritize tasks by deadline.Example:Auto-prioritization:
🔍 Smart Task Discovery
🔍 Smart Task Discovery
Use semantic search to find related work.Example:Why it matters:
- Discover tasks you didn’t know existed
- Avoid duplicate work
- Learn from completed tasks
Best Practices
1. Break Large Features Into Small Tasks
Bad:Good:Why: Smaller tasks = better progress tracking, easier parallelization
2. Use Descriptive Task Titles
Bad:Good:Why: Clear titles make search and discovery effective
3. Set Dependencies Early
Best practice:
- Create all tasks for a feature at once
- Set dependencies immediately
- Let AI agents suggest dependency order
4. Use Comments for Context
Add context that helps other agents:Why: Future agents can quickly understand the task
5. Tag Tasks for Organization
Example:Why: Makes filtering and reporting easier
6. Track Estimates vs. Actuals
Set estimates:Compare with actual:Why: Improve future estimates, identify bottlenecks
What’s Next?
1
Try Bulk Operations
2
Explore Macro Tools
3
Check API Reference