Task Coordination Strategies
Strategies for decomposing complex tasks into parallelizable units, designing dependency graphs, writing effective task descriptions, and monitoring workload across agent teams.
When to Use This Skill
- Breaking down a complex task for parallel execution
- Designing task dependency relationships (blockedBy/blocks)
- Writing task descriptions with clear acceptance criteria
- Monitoring and rebalancing workload across teammates
- Identifying the critical path in a multi-task workflow
Task Decomposition Strategies
By Layer
Split work by architectural layer:
- Frontend components
- Backend API endpoints
- Database migrations/models
- Test suites
Best for: Full-stack features, vertical slices
By Component
Split work by functional component:
- Authentication module
- User profile module
- Notification module
Best for: Microservices, modular architectures
By Concern
Split work by cross-cutting concern:
- Security review
- Performance review
- Architecture review
Best for: Code reviews, audits
By File Ownership
Split work by file/directory boundaries:
src/components/β Implementer 1src/api/β Implementer 2src/utils/β Implementer 3
Best for: Parallel implementation, conflict avoidance
Dependency Graph Design
Principles
- Minimize chain depth β Prefer wide, shallow graphs over deep chains
- Identify the critical path β The longest chain determines minimum completion time
- Use blockedBy sparingly β Only add dependencies that are truly required
- Avoid circular dependencies β Task A blocks B blocks A is a deadlock
Patterns
Independent (Best parallelism):
Task A ββ
Task B ββΌββ Integration
Task C ββSequential (Necessary dependencies):
Task A β Task B β Task CDiamond (Mixed):
ββ Task B ββ
Task A ββ€ ββ Task D
ββ Task C ββUsing blockedBy/blocks
TaskCreate: { subject: "Build API endpoints" } β Task #1
TaskCreate: { subject: "Build frontend components" } β Task #2
TaskCreate: { subject: "Integration testing" } β Task #3
TaskUpdate: { taskId: "3", addBlockedBy: ["1", "2"] } β #3 waits for #1 and #2Task Description Best Practices
Every task should include:
- Objective β What needs to be accomplished (1-2 sentences)
- Owned Files β Explicit list of files/directories this teammate may modify
- Requirements β Specific deliverables or behaviors expected
- Interface Contracts β How this work connects to other teammates' work
- Acceptance Criteria β How to verify the task is done correctly
- Scope Boundaries β What is explicitly out of scope
Template
## Objective
Build the user authentication API endpoints.
## Owned Files
- src/api/auth.ts
- src/api/middleware/auth-middleware.ts
- src/types/auth.ts (shared β read only, do not modify)
## Requirements
- POST /api/login β accepts email/password, returns JWT
- POST /api/register β creates new user, returns JWT
- GET /api/me β returns current user profile (requires auth)
## Interface Contract
- Import User type from src/types/auth.ts (owned by implementer-1)
- Export AuthResponse type for frontend consumption
## Acceptance Criteria
- All endpoints return proper HTTP status codes
- JWT tokens expire after 24 hours
- Passwords are hashed with bcrypt
## Out of Scope
- OAuth/social login
- Password reset flow
- Rate limitingWorkload Monitoring
Indicators of Imbalance
| Signal | Meaning | Action |
|---|---|---|
| Teammate idle, others busy | Uneven distribution | Reassign pending tasks |
| Teammate stuck on one task | Possible blocker | Check in, offer help |
| All tasks blocked | Dependency issue | Resolve critical path first |
| One teammate has 3x others | Overloaded | Split tasks or reassign |
Rebalancing Steps
- Call
TaskListto assess current state - Identify idle or overloaded teammates
- Use
TaskUpdateto reassign tasks - Use
SendMessageto notify affected teammates - Monitor for improved throughput