dependency-tracking
About
This skill enables developers to map, track, and manage project dependencies across teams and systems. It helps identify critical path items and proactively prevent blocking issues. It is essential for complex multi-team projects, technical integrations, and preventing schedule delays.
Documentation
Dependency Tracking
Overview
Dependency tracking ensures visibility of task relationships, identifies blocking issues early, and enables better resource planning and risk mitigation.
When to Use
- Multi-team projects and programs
- Complex technical integrations
- Cross-organizational initiatives
- Identifying critical path items
- Resource allocation planning
- Preventing schedule delays
- Onboarding new team members
Instructions
1. Dependency Mapping
# Dependency mapping and tracking
class DependencyTracker:
DEPENDENCY_TYPES = {
'Finish-to-Start': 'Task B cannot start until Task A is complete',
'Start-to-Start': 'Task B cannot start until Task A starts',
'Finish-to-Finish': 'Task B cannot finish until Task A is complete',
'Start-to-Finish': 'Task B cannot finish until Task A starts'
}
def __init__(self):
self.tasks = []
self.dependencies = []
self.critical_path = []
def create_dependency_map(self, tasks):
"""Create visual dependency network"""
dependency_graph = {
'nodes': [],
'edges': [],
'critical_items': []
}
for task in tasks:
dependency_graph['nodes'].append({
'id': task.id,
'name': task.name,
'duration': task.duration,
'owner': task.owner,
'status': task.status
})
for blocker in task.blocked_by:
dependency_graph['edges'].append({
'from': blocker,
'to': task.id,
'type': 'Finish-to-Start',
'lag': 0 # days between tasks
})
return dependency_graph
def analyze_critical_path(self, tasks):
"""Identify longest chain of dependent tasks"""
paths = self.find_all_paths(tasks)
critical_path = max(paths, key=len)
return {
'critical_items': critical_path,
'total_duration': sum(t.duration for t in critical_path),
'slack_available': 0,
'any_delay_impacts_schedule': True,
'monitoring_frequency': 'Daily'
}
def identify_blocking_dependencies(self, tasks):
"""Find tasks that block other work"""
blocking_tasks = {}
for task in tasks:
blocked_count = sum(1 for t in tasks if task.id in t.blocked_by)
if blocked_count > 0:
blocking_tasks[task.id] = {
'task': task.name,
'blocking_count': blocked_count,
'blocked_tasks': [t.id for t in tasks if task.id in t.blocked_by],
'status': task.status,
'due_date': task.due_date,
'risk_level': 'High' if blocked_count > 3 else 'Medium'
}
return blocking_tasks
def find_circular_dependencies(self, tasks):
"""Detect circular dependency chains"""
cycles = []
for task in tasks:
visited = set()
if self.has_cycle(task, visited, tasks):
cycles.append({
'cycle': visited,
'severity': 'Critical',
'action': 'Resolve immediately'
})
return cycles
def has_cycle(self, task, visited, tasks):
visited.add(task.id)
for blocker_id in task.blocked_by:
blocker = next(t for t in tasks if t.id == blocker_id)
if blocker.id in visited:
return True
if self.has_cycle(blocker, visited, tasks):
return True
visited.remove(task.id)
return False
2. Dependency Management Board
Dependency Tracking Dashboard:
Project: Platform Migration Q1 2025
---
Critical Path (Blocking Progress):
Task: Database Migration
ID: TASK-101
Owner: Data Team
Duration: 20 days
Status: In Progress (50%)
Due Date: Feb 28, 2025
Blocked By: Schema validation (TASK-95) - DUE TODAY
Blocks: 6 downstream tasks
Risk Level: HIGH
Action Items:
- Daily standup with Data Team
- Schema validation must complete by EOD
- Have rollback plan ready
---
Task: API Contract Finalization
ID: TASK-102
Owner: Backend Team
Duration: 10 days
Status: Pending (Blocked)
Depends On: Database Migration (TASK-101)
Blocks: Frontend implementation (TASK-103), Testing (TASK-104)
Slack Time: 0 days (critical)
Early Start: Mar 1, 2025
Action Items:
- Start draft specifications now
- Review with Frontend team
- Have alternative approach ready
---
High-Risk Dependencies:
Dependency: Third-party Integration
From: Payment Service API (vendor)
To: Checkout System (TASK-150)
Type: External/Uncontrollable
Status: At Risk (Vendor delay reported)
Mitigation: Mock service implementation, alternative vendor identified
Escalation Owner: Product Manager
---
By Team Dependencies:
Backend Team:
- Database migration → API development
- Schema design → Data layer implementation
External: Awaiting Payment Gateway API docs
Frontend Team:
- API contracts → UI implementation
- Design system → Component development
Dependency on Backend: API contract specs (scheduled Feb 20)
DevOps Team:
- Infrastructure provisioning → Testing environment
- Kubernetes setup → Staging deployment
External: Cloud provider quota approval
3. Dependency Resolution
// Handling and resolving dependency issues
class DependencyResolution {
resolveDependencyConflict(blocker, blocked) {
return {
conflict: {
blocking_task: blocker.name,
blocked_task: blocked.name,
reason: 'Circular dependency detected'
},
resolution_options: [
{
option: 'Parallelize Work',
description: 'Identify independent portions that can proceed',
effort: 'Medium',
timeline: 'Can save 5 days'
},
{
option: 'Remove/Defer Blocker',
description: 'Defer non-critical requirements',
effort: 'Low',
timeline: 'Immediate'
},
{
option: 'Create Interim Deliverable',
description: 'Deliver partial results to unblock downstream',
effort: 'High',
timeline: 'Can save 8 days'
}
]
};
}
breakDependency(dependency) {
return {
current_state: dependency,
break_strategies: [
{
strategy: 'Remove unnecessary dependency',
action: 'Refactor to eliminate requirement',
risk: 'Low if verified'
},
{
strategy: 'Mock/Stub external dependency',
action: 'Create temporary implementation',
risk: 'Medium - ensures compatibility'
},
{
strategy: 'Parallel development',
action: 'Make assumptions, validate later',
risk: 'Medium - rework possible'
},
{
strategy: 'Resource addition',
action: 'Parallelize work streams',
risk: 'Low but costly'
}
]
};
}
handleBlockedTask(task) {
return {
task_id: task.id,
status: 'Blocked',
blocker: task.blocked_by[0],
time_blocked: task.calculateBlockedDuration(),
actions: [
'Notify team of blockage',
'Escalate if critical path',
'Identify alternative work',
'Schedule resolution meeting',
'Track blocker closure date'
],
escalation: {
immediate: task.is_critical_path,
owner: task.program_manager,
frequency: 'Daily standup until resolved'
}
};
}
}
4. Dependency Dashboard Metrics
Key Metrics:
Critical Path Health:
- Items on Critical Path: 12
- At-Risk Items: 2 (17%)
- Completed: 4 (33%)
- On Track: 6 (50%)
- Behind: 2 (17%)
Dependency Status:
- Total Dependencies: 28
- Resolved: 18
- Active: 8
- At Risk: 2
- Circular: 0 (Good!)
Blocking Impact:
- Tasks Currently Blocked: 3
- Team Members Idle: 2
- Blocked Effort (person-hours): 24
- Estimated Cost of Blockage: $2,400
Escalations:
- Open: 1 (Database migration dependency)
- Resolved This Week: 0
- Average Resolution Time: 2.3 days
Best Practices
✅ DO
- Map dependencies early in planning
- Update dependency tracking weekly
- Identify and monitor critical path items
- Proactively communicate blockers
- Have contingency plans for key dependencies
- Break complex dependencies into smaller pieces
- Track external dependencies separately
- Escalate blocked critical path items immediately
- Remove unnecessary dependencies
- Build in buffer time for risky dependencies
❌ DON'T
- Ignore external dependencies
- Leave circular dependencies unresolved
- Assume dependencies will "work out"
- Skip daily monitoring of critical path
- Communicate issues only in status meetings
- Create too many dependencies (couples systems)
- Forget to document dependency rationale
- Avoid escalating blocked critical work
- Plan at 100% utilization (no buffer for dependencies)
- Treat all dependencies as equal priority
Dependency Management Tips
- Color-code by risk level in tracking tools
- Weekly review of blocked/at-risk items
- Maintain updated dependency diagram
- Escalate after 1 day of blockage on critical path
- Build 15-20% buffer for risky dependencies
Quick Install
/plugin add https://github.com/aj-geddes/useful-ai-prompts/tree/main/dependency-trackingCopy and paste this command in Claude Code to install this skill
GitHub 仓库
Related Skills
subagent-driven-development
DevelopmentThis skill executes implementation plans by dispatching a fresh subagent for each independent task, with code review between tasks. It enables fast iteration while maintaining quality gates through this review process. Use it when working on mostly independent tasks within the same session to ensure continuous progress with built-in quality checks.
algorithmic-art
MetaThis Claude Skill creates original algorithmic art using p5.js with seeded randomness and interactive parameters. It generates .md files for algorithmic philosophies, plus .html and .js files for interactive generative art implementations. Use it when developers need to create flow fields, particle systems, or other computational art while avoiding copyright issues.
executing-plans
DesignUse the executing-plans skill when you have a complete implementation plan to execute in controlled batches with review checkpoints. It loads and critically reviews the plan, then executes tasks in small batches (default 3 tasks) while reporting progress between each batch for architect review. This ensures systematic implementation with built-in quality control checkpoints.
cost-optimization
OtherThis Claude Skill helps developers optimize cloud costs through resource rightsizing, tagging strategies, and spending analysis. It provides a framework for reducing cloud expenses and implementing cost governance across AWS, Azure, and GCP. Use it when you need to analyze infrastructure costs, right-size resources, or meet budget constraints.
