IHKREDDY

tech-debt-report

Find TODOs, deprecated APIs, and outdated patterns in codebase

IHKREDDY 0 Updated 5mo ago
GitHub

Install

npx skillscat add ihkreddy/agent-skills-ts/tech-debt-report

Install via the SkillsCat registry.

SKILL.md

Tech Debt Report Generator

Scans the codebase to identify technical debt including TODO comments, deprecated API usage, outdated patterns, and potential refactoring opportunities.

๐ŸŽฏ Use Case Demo

Scenario: Quarterly Tech Debt Assessment

Before (Manual Process):

Tech Lead needs to assess tech debt for planning:

  1. Grep for TODO and FIXME comments
  2. Manually review code for deprecated APIs
  3. Check for outdated patterns
  4. Try to estimate effort for each item
  5. Create Jira tickets manually
  6. Prioritize based on gut feeling

Time: 1-2 days, incomplete coverage

After (With This Skill):

Tech Lead: "Generate tech debt report for the codebase"

Agent Response:

๐Ÿ”ง TECHNICAL DEBT REPORT
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

๐Ÿ“… Report Date: December 20, 2024
๐Ÿ“ Scanned: 47 files, 8,234 lines of code

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ“Š DEBT SUMMARY
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

| Category | Count | Estimated Effort | Priority |
|----------|-------|------------------|----------|
| Critical TODOs | 3 | 2 days | ๐Ÿ”ด High |
| Deprecated APIs | 5 | 1 day | ๐Ÿ”ด High |
| Code Smells | 12 | 3 days | ๐ŸŸก Medium |
| Old Patterns | 8 | 2 days | ๐ŸŸก Medium |
| Minor TODOs | 15 | 1 day | ๐ŸŸข Low |
| **TOTAL** | **43** | **9 days** | |

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ”ด CRITICAL ISSUES (Fix ASAP)
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

1. ๐Ÿšจ Security: Hardcoded API Key
   ๐Ÿ“ Services/PaymentService.cs:23
   ```csharp
   // TODO: Move to environment variable - URGENT
   private const string ApiKey = "sk_live_xxxxx";

โฑ๏ธ Effort: 30 min
๐ŸŽซ Suggested: Create Jira ticket with "security" label

  1. ๐Ÿšจ Data Loss Risk: Missing Transaction
    ๐Ÿ“ Services/BookingService.cs:156

    // FIXME: No transaction wrapper - can cause partial bookings
    await _repository.CreateBooking(booking);
    await _paymentService.Charge(payment);

    โฑ๏ธ Effort: 2 hours
    ๐ŸŽซ Suggested: High priority bug ticket

  2. ๐Ÿšจ Deprecated: Newtonsoft.Json
    ๐Ÿ“ Multiple files (7 occurrences)
    Issue: Using Newtonsoft.Json instead of System.Text.Json
    Impact: Performance, security updates
    โฑ๏ธ Effort: 4 hours
    ๐ŸŽซ Suggested: Refactoring ticket

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐ŸŸก DEPRECATED API USAGE
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Location Deprecated API Replacement
FlightsController.cs:45 DateTime.Now DateTime.UtcNow
BookingService.cs:89 HttpClient() IHttpClientFactory
FlightService.cs:34 GetAwaiter().GetResult() async/await
SearchRequest.cs:12 [Obsolete] FlightClass CabinClass enum
Program.cs:67 UseUrls() WebApplication.Urls

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ“ TODO/FIXME COMMENTS
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

High Priority (blocking or risky):
๐Ÿ“ BookingService.cs:45 - TODO: Add retry logic for API calls
๐Ÿ“ PaymentService.cs:78 - FIXME: Handle timeout properly
๐Ÿ“ FlightService.cs:112 - TODO: Cache this query

Medium Priority (quality/performance):
๐Ÿ“ FlightsController.cs:89 - TODO: Add pagination
๐Ÿ“ BookingsController.cs:34 - TODO: Add input validation
๐Ÿ“ SearchRequest.cs:23 - TODO: Add date range validation
... and 6 more

Low Priority (nice to have):
๐Ÿ“ Multiple files - TODO: Add XML documentation
๐Ÿ“ Models/*.cs - TODO: Add validation attributes
... and 9 more

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ”„ OUTDATED PATTERNS
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

  1. Manual Dependency Injection
    ๐Ÿ“ Program.cs:23-45
    Current: Manual service registration
    Better: Use Scrutor for assembly scanning
    Effort: 2 hours

  2. String Concatenation in Queries
    ๐Ÿ“ FlightService.cs:67
    Current: String interpolation in SQL
    Better: Parameterized queries or EF Core
    Risk: SQL Injection (CRITICAL)
    Effort: 1 hour

  3. Synchronous File I/O
    ๐Ÿ“ Services/LogService.cs:34
    Current: File.WriteAllText()
    Better: File.WriteAllTextAsync()
    Effort: 15 min

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐Ÿ“‹ RECOMMENDED ACTION PLAN
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Sprint 1 (Immediate - 2 days):
โ–ก Fix hardcoded API key (security)
โ–ก Add transaction wrapper (data integrity)
โ–ก Fix SQL injection vulnerability

Sprint 2 (Next - 3 days):
โ–ก Migrate from Newtonsoft.Json
โ–ก Fix deprecated HttpClient usage
โ–ก Add retry logic to API calls

Sprint 3 (Planned - 4 days):
โ–ก Clean up remaining TODOs
โ–ก Modernize DI registration
โ–ก Add missing validation

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
๐ŸŽซ CREATE JIRA TICKETS?
โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•

Say "Create tickets for critical tech debt" to automatically
create Jira tickets for the high-priority items.

โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•
```

Time Saved: 1-2 days โ†’ 2 minutes (500x faster)


Agent Instructions

When this skill is activated:

  1. Scan for TODO/FIXME Comments:

    • Search all source files for TODO, FIXME, HACK, XXX comments
    • Extract the comment text and file location
    • Parse any ticket references or priority indicators
  2. Check for Deprecated APIs:

    • Look for [Obsolete] attributes
    • Check for known deprecated patterns:
      • DateTime.Now โ†’ DateTime.UtcNow
      • new HttpClient() โ†’ IHttpClientFactory
      • GetAwaiter().GetResult() โ†’ proper async
      • Newtonsoft.Json โ†’ System.Text.Json
    • Check for deprecated framework APIs
  3. Identify Code Smells:

    • Long methods (>50 lines)
    • Large classes (>500 lines)
    • Deep nesting (>4 levels)
    • Magic numbers/strings
    • Duplicate code patterns
  4. Assess Security Issues:

    • Hardcoded secrets/keys
    • SQL injection vulnerabilities
    • Missing input validation
  5. Categorize and Prioritize:

    • Critical: Security, data integrity
    • High: Deprecated APIs, blocking TODOs
    • Medium: Performance, code quality
    • Low: Documentation, minor cleanup
  6. Estimate Effort:

    • Based on scope and complexity
    • Consider testing requirements
  7. Generate Action Plan:

    • Group into sprint-sized chunks
    • Prioritize by risk and impact

Example Prompts

  • "Generate tech debt report"
  • "Find all TODO comments in the codebase"
  • "Check for deprecated API usage"
  • "What refactoring is needed?"
  • "Show me code quality issues"

Benefits

Metric Before After Improvement
Assessment time 1-2 days 2 min 500x faster
Coverage 60-70% 100% Complete scan
Prioritization Subjective Data-driven Better decisions
Tracking Ad-hoc Systematic Nothing forgotten