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?
Try Bulk Operations
Explore Macro Tools
Check API Reference
Need Help?
Getting Started
Quick setup guide
Support
Email us anytime
Community
Join our Discord