Tech Debt Tracker
The agent identifies, scores, prioritizes, and tracks technical debt across codebases using AST parsing, cost-of-delay analysis, and trend dashboards.
Workflow
-
Scan codebase -- Run the Debt Scanner against the target repository. It uses AST parsing and pattern matching to detect debt signals across all six categories (code, architecture, test, documentation, dependency, infrastructure).
-
Score each item -- Apply the Severity Scoring Framework. Rate each item on velocity impact, quality impact, productivity impact, and business impact (1-10 each). Estimate effort (XS-XL) and risk level.
-
Calculate interest rate -- For each item, compute Interest Rate = Impact Score x Frequency of Encounter per sprint. Calculate Cost of Delay = Interest Rate x Sprints Until Fix x Team Size Multiplier .
-
Prioritize -- Plot items on the Cost-of-Delay vs Effort matrix. Assign priority: Immediate (high cost, low effort), Planned (high cost, high effort), Opportunistic (low cost, low effort), Backlog (low cost, high effort).
-
Allocate sprint capacity -- Apply the Debt-to-Feature Ratio based on current team velocity. Reserve the recommended percentage for debt work.
-
Generate reports -- Produce the Executive Dashboard (health score, trend, top risks, investment recommendation) and the Engineering Dashboard (daily new/resolved, interest rate by component, hotspots).
-
Track trends -- Compare current scan against previous baselines. Alert if debt accumulation rate exceeds paydown rate for two consecutive sprints.
Debt Classification
Category Key Indicators Detection Method
Code Functions > 50 lines, nesting > 4 levels, cyclomatic complexity > 10, duplicate blocks > 3 AST parsing, complexity metrics
Architecture Circular dependencies, tight coupling, missing abstraction layers, monolithic components Dependency analysis, coupling metrics
Test Coverage < 80% on critical paths, flaky tests, test suite > 10 min Coverage reports, failure pattern analysis
Documentation Missing API docs, outdated READMEs, no ADRs, stale comments Coverage analysis, freshness checking
Dependency Known CVEs, deprecated APIs, unused packages, version conflicts Vulnerability scanning, usage analysis
Infrastructure Manual deploys, missing monitoring, env inconsistencies, no DR plan Audit checklists, config drift detection
Severity Scoring Framework
Rate each dimension 1-10:
Dimension 1-2 5-6 9-10
Velocity Impact Negligible Affects some features Blocks new development
Quality Impact No defect increase Moderate defect increase Critical reliability problems
Productivity Impact No team impact Regular complaints Causing developer turnover
Business Impact No customer impact Moderate performance hit Revenue-impacting issues
Effort sizing: XS (1-4 hrs), S (1-2 days), M (3-5 days), L (1-2 weeks), XL (3+ weeks)
Interest Rate and Cost of Delay
Interest Rate = Impact Score x Frequency of Encounter (per sprint) Cost of Delay = Interest Rate x Sprints Until Fix x Team Size Multiplier
Example: Legacy auth module with poor error handling Impact: 7 | Frequency: 15 encounters/sprint | Team: 8 devs Planned fix: sprint 4 (3 sprints away)
Interest Rate = 7 x 15 = 105 points/sprint Cost of Delay = 105 x 3 x 1.2 = 378 total cost points
Prioritization Matrix
Quadrant Cost of Delay Effort Action
Immediate (quick wins) High Low Do first
Planned (major initiatives) High High Schedule dedicated sprints
Opportunistic Low Low Fix when touching related code
Backlog Low High Reconsider quarterly
WSJF Alternative
WSJF = (Business Value + Time Criticality + Risk Reduction) / Effort
Each component scored 1-10. Highest WSJF items are prioritized first.
Sprint Allocation (Debt-to-Feature Ratio)
Team Velocity Debt % Feature % Strategy
< 70% of capacity 60% 40% Remove major blockers
70-85% of capacity 30% 70% Balanced maintenance
85% of capacity 15% 85% Opportunistic only
Sprint planning rule: Reserve 20% of sprint capacity for debt. Prioritize items with the highest interest rates. Add "debt tax" to feature estimates when working in high-debt areas.
Debt Item Data Structure
{ "id": "DEBT-2024-001", "title": "Legacy user authentication module", "category": "code", "subcategory": "error_handling", "location": "src/auth/legacy_auth.py:45-120", "description": "Authentication error handling uses generic exceptions", "impact": { "velocity": 7, "quality": 8, "productivity": 6, "business": 5 }, "effort": { "size": "M", "risk": "medium", "skill_required": "mid" }, "interest_rate": 105, "cost_of_delay": 378, "priority": "high", "status": "identified", "tags": ["security", "user-experience", "maintainability"] }
Status lifecycle: Identified > Analyzed > Prioritized > Planned > In Progress > Review > Done | Won't Fix
Refactoring Strategies
Strategy When to Use How It Works
Strangler Fig Large monoliths, high-risk migrations Build new around old; gradually redirect traffic; remove old
Branch by Abstraction Need old + new running in parallel Create interface; implement both behind it; switch via config
Feature Toggles Gradual rollout of refactored components Add toggle at decision points; test both paths; remove old
Parallel Run Critical business logic changes Run both implementations; compare outputs; build confidence
Executive Dashboard
TECH DEBT HEALTH Overall Score: [0-100] | Trend: [improving/declining] Cost of Delayed Fixes: [X development days] High-Risk Items: [count]
MONTHLY REPORT:
- Executive Summary (3 bullet points)
- Health Score Trend (6-month view)
- Top 3 Risk Items (business impact focus)
- Investment Recommendation (resource allocation)
- Success Stories (debt resolved last month)
Engineering Dashboard
DAILY: New items identified | Items resolved | Interest rate by component
SPRINT REVIEW: Debt points completed vs planned | Velocity impact Newly discovered debt | Team code quality sentiment
Example: Scanning a Python Microservice
Run debt scanner
python scripts/debt_scanner.py --repo ./payment-service --output debt_inventory.json
Output summary:
Total items found: 47
Critical: 3 | High: 8 | Medium: 21 | Low: 15
Top 3 by cost-of-delay:
1. DEBT-001: payment_processor.py - nested exception handling (CoD: 420)
2. DEBT-002: db/migrations/ - 12 unapplied migrations (CoD: 315)
3. DEBT-003: tests/ - 62% coverage on payment flow (CoD: 280)
Prioritize items
python scripts/debt_prioritizer.py --inventory debt_inventory.json --sprint-capacity 40
Generate executive report
python scripts/debt_dashboard.py --inventory debt_inventory.json --baseline previous_scan.json
Quarterly Planning
-
Identify 1-2 major debt themes per quarter
-
Allocate dedicated sprints for large-scale refactoring
-
Plan debt work around major feature releases
-
Track: debt interest rate reduction, velocity improvements, defect rate reduction, code review cycle time
Scripts
Debt Scanner (debt_scanner.py )
Scans codebase using AST parsing and pattern matching. Detects all six debt categories. Outputs structured JSON inventory.
Debt Prioritizer (debt_prioritizer.py )
Analyses debt inventory using cost-of-delay and WSJF frameworks. Outputs prioritized backlog with sprint allocation recommendations.
Debt Dashboard (debt_dashboard.py )
Generates trend reports comparing current scan against baselines. Produces executive and engineering dashboard views.
References
See REFERENCE.md for the complete Technical Debt Quadrant (Fowler), detailed detection heuristics per category, and implementation roadmap phases.