tech-debt-analyzer

This skill should be used when analyzing technical debt in a codebase, documenting code quality issues, creating technical debt registers, or assessing code…

INSTALLATION
npx skills add https://github.com/ailabs-393/ai-labs-claude-skills --skill tech-debt-analyzer
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Technical Debt Analyzer

Overview

Systematically identify, analyze, document, and track technical debt in JavaScript/TypeScript codebases. This skill provides automated analysis tools, comprehensive debt categorization frameworks, and documentation templates to maintain a technical debt register.

Core Workflow

1. Automated Analysis

Run automated scripts to detect technical debt indicators across the codebase.

#### Code Smell Detection

Identify code quality issues using the automated detector:

python3 scripts/detect_code_smells.py src --output markdown

The script analyzes:

  • Large Files: Files exceeding 500 lines
  • Complex Functions: High cyclomatic complexity (>10) or long functions (>50 lines)
  • Debt Markers: TODO, FIXME, HACK, XXX, BUG comments
  • Console Statements: Debug statements left in code
  • Weak Typing: Use of any type in TypeScript
  • Long Parameters: Functions with >5 parameters
  • Deep Nesting: Code nested >4 levels deep
  • Magic Numbers: Hardcoded numeric values

Output Example:

# Technical Debt Analysis Report

**Files Analyzed:** 127

**Total Lines:** 15,432

**Total Issues:** 89

### Issues by Severity

- HIGH: 23

- MEDIUM: 41

- LOW: 25

## Large Files (12 issues)

### High Priority

- src/components/Dashboard.tsx (847 lines): File too large

- src/services/DataProcessor.ts (623 lines): File too large

...

#### Dependency Analysis

Examine dependencies for debt indicators:

python3 scripts/analyze_dependencies.py package.json

The script identifies:

  • Deprecated Packages: Known deprecated libraries (request, tslint, etc.)
  • Duplicate Functionality: Multiple packages serving same purpose
  • Version Issues: Overly loose or strict version constraints
  • Security Concerns: Known vulnerable packages (requires audit data)

Output Example:

# Dependency Analysis Report

**Package:** expense-tracker

**Dependencies:** 24

**Dev Dependencies:** 18

**Total Issues:** 7

## Deprecated/Outdated Packages (3)

### request [HIGH]

Using deprecated package - use axios, node-fetch, or got instead

- Current version: ^2.88.0

## Duplicate Functionality (2)

### HTTP client [MEDIUM]

Multiple packages for HTTP client: axios, node-fetch

2. Manual Code Review

Complement automated analysis with manual review for issues that require human judgment.

#### Review Focus Areas

Architectural Debt:

  • Tight coupling between components
  • Missing abstractions
  • Poor separation of concerns
  • Circular dependencies

Test Debt:

  • Missing test coverage for critical paths
  • Fragile tests coupled to implementation
  • No integration or E2E tests
  • Slow test execution

Documentation Debt:

  • Missing README or setup instructions
  • No architecture documentation
  • Outdated API docs
  • Missing ADRs for major decisions

Performance Debt:

  • N+1 query problems
  • Inefficient algorithms
  • Memory leaks
  • Large bundle sizes

Security Debt:

  • Missing input validation
  • No authentication/authorization
  • SQL injection vulnerabilities
  • XSS vulnerabilities
  • Exposed secrets

3. Categorize and Assess

Organize findings using the standardized debt categories.

#### Debt Categories

Refer to references/debt_categories.md for comprehensive details on:

  • Code Quality Debt: Code smells, complexity, duplication
  • Architectural Debt: Structure, coupling, abstractions
  • Test Debt: Coverage gaps, fragile tests
  • Documentation Debt: Missing or outdated docs
  • Dependency Debt: Outdated or problematic dependencies
  • Performance Debt: Inefficiencies and bottlenecks
  • Security Debt: Vulnerabilities and weaknesses
  • Infrastructure Debt: DevOps and deployment issues
  • Design Debt: UI/UX inconsistencies

#### Severity Assessment

Assign severity based on impact and urgency:

Critical:

  • Security vulnerabilities
  • Production-breaking issues
  • Data loss risks
  • Action: Immediate fix required

High:

  • Significant performance problems
  • Architectural issues blocking features
  • High-risk untested code
  • Action: Fix within current/next sprint

Medium:

  • Code quality issues in frequently changed files
  • Missing documentation
  • Outdated dependencies (non-security)
  • Action: Address within quarter

Low:

  • Minor code smells
  • Optimization opportunities
  • Nice-to-have improvements
  • Action: Address when convenient

#### Priority Matrix

Impact / Effort

Low Effort

Medium Effort

High Effort

High Impact

Do First

Do Second

Plan & Do

Medium Impact

Do Second

Plan & Do

Consider

Low Impact

Quick Win

Consider

Avoid

4. Document Findings

Create comprehensive documentation of technical debt.

#### Technical Debt Register

Use the provided template to maintain a debt register:

Template Location: assets/DEBT_REGISTER_TEMPLATE.md

Structure:

## DEBT-001: Complex UserService with 847 lines

**Category:** Code Quality

**Severity:** High

**Location:** src/services/UserService.ts

**Description:**

UserService has grown to 847 lines with multiple responsibilities

including authentication, profile management, and notification handling.

**Impact:**

- Business: Slows down feature development by 30%

- Technical: Difficult to test, high bug rate

- Risk: Changes frequently break unrelated functionality

**Proposed Solution:**

Split into separate services:

- AuthenticationService

- UserProfileService

- NotificationService

**Effort Estimate:** 3 days

**Priority Justification:** High churn area blocking new features

**Target Resolution:** Sprint 24

Register Sections:

  • Active Debt Items: Current technical debt needing attention
  • Resolved Items: Historical record of fixed debt
  • Won't Fix Items: Debt accepted as acceptable trade-off
  • Trends: Analysis by category, severity, and age
  • Review Schedule: Regular maintenance plan

#### Architecture Decision Records (ADRs)

Document major technical decisions using ADRs to prevent future debt.

Template Location: assets/ADR_TEMPLATE.md

When to Create ADRs:

  • Choosing frameworks or libraries
  • Architectural changes
  • Major refactoring decisions
  • Technology migrations
  • Performance optimization strategies

Example:

# ADR-003: Migrate from Moment.js to date-fns

**Status:** Accepted

**Date:** 2024-01-15

## Context

Moment.js is deprecated and increases bundle size by 67KB.

Team needs a modern date library with tree-shaking support.

## Decision

Migrate to date-fns for date manipulation.

## Consequences

- Positive: Reduce bundle by 60KB, modern API, active maintenance

- Negative: Migration effort, learning curve for team

- Technical Debt: None - this resolves existing dependency debt

5. Prioritize and Plan

Create actionable plans to address technical debt.

#### Prioritization Approach

  • Critical Items: Add to current sprint immediately
  • High Items: Include in sprint planning
  • Medium Items: Add to quarterly roadmap
  • Low Items: Opportunistic fixes during related work

#### Time Allocation

Recommended Allocation:

  • 20% of sprint capacity for technical debt
  • Alternating sprints: feature sprint / debt sprint
  • Dedicated quarterly "tech health" sprint

#### Tracking Progress

Monitor debt reduction over time:

Metrics to Track:

  • Total debt items (trend down)
  • Debt by severity (critical should be 0)
  • Debt age (old debt is concerning)
  • Resolution rate (items fixed per sprint)
  • New debt rate (items added per sprint)

6. Prevention Strategies

Implement practices to minimize new technical debt.

#### Code Review Checklist

Before approving PRs, verify:

  • No code smells introduced (complexity, size, nesting)
  • Tests added/updated with adequate coverage
  • Documentation updated (README, comments, ADRs)
  • No security vulnerabilities
  • Performance impact considered
  • No new dependencies without justification
  • Follows team conventions and patterns

#### Automated Prevention

Linting and Formatting:

{

  "rules": {

    "complexity": ["error", 10],

    "max-lines-per-function": ["error", 50],

    "max-params": ["error", 5],

    "max-depth": ["error", 4],

    "no-console": "warn"

  }

}

Required Checks:

  • TypeScript strict mode enabled
  • Minimum test coverage threshold (80%)
  • No high-severity security vulnerabilities
  • Bundle size limits enforced

#### Regular Maintenance

Weekly:

  • Review and triage TODO/FIXME comments
  • Update debt register with new findings

Monthly:

  • Dependency updates (security patches)
  • Debt register review
  • Plan fixes for high-priority items

Quarterly:

  • Full codebase debt analysis
  • Architecture review
  • Major dependency updates
  • Trend analysis and strategy adjustment

Decision Tree

Follow this workflow based on the situation:

Starting a new analysis?

→ Run automated scripts (detect_code_smells.py, analyze_dependencies.py)

→ Review output for high-severity issues

→ Conduct manual review for areas scripts can't detect

→ Go to documentation step

Documenting findings?

→ Copy DEBT_REGISTER_TEMPLATE.md to project root

→ Add each debt item with full details

→ Categorize by type and assign severity

→ Estimate effort and prioritize

→ Go to planning step

Planning debt reduction?

→ Sort by priority matrix (impact/effort)

→ Allocate sprint capacity (20% recommended)

→ Create tickets for top priority items

→ Schedule regular reviews

Making architectural decisions?

→ Copy ADR_TEMPLATE.md

→ Document context, options, and decision

→ Identify any debt being incurred

→ Add to debt register if applicable

Preventing new debt?

→ Implement code review checklist

→ Configure automated linting/testing

→ Set up regular maintenance schedule

→ Monitor metrics over time

Tools and Scripts

detect_code_smells.py

Purpose: Automated code quality analysis

Usage:

python3 scripts/detect_code_smells.py [src-dir] [--output json|markdown]

Detects:

  • Large files (>500 lines)
  • Complex functions (complexity >10)
  • Technical debt markers (TODO, FIXME, HACK)
  • Console statements
  • Weak TypeScript typing
  • Long parameter lists (>5 params)
  • Deep nesting (>4 levels)
  • Magic numbers

Output: Markdown report or JSON for programmatic processing

analyze_dependencies.py

Purpose: Dependency health analysis

Usage:

python3 scripts/analyze_dependencies.py [package.json-path]

Detects:

  • Deprecated packages (request, tslint, node-sass, etc.)
  • Duplicate functionality (multiple date libs, http clients, etc.)
  • Unsafe version constraints (*, latest)
  • Overly strict versions (exact versions without ^ or ~)

Output: Markdown report with recommendations

Reference Documentation

debt_categories.md

Comprehensive guide to technical debt types with:

  • 9 major debt categories
  • Indicators and examples for each
  • Impact assessment criteria
  • Severity level definitions
  • Measurement metrics
  • Prevention strategies

Load this reference when:

  • Need detailed examples of specific debt types
  • Assessing severity and impact
  • Understanding root causes
  • Planning prevention strategies

Documentation Templates

DEBT_REGISTER_TEMPLATE.md

Complete technical debt register template including:

  • Debt item structure
  • Status tracking
  • Impact assessment format
  • Trend analysis sections
  • Review schedule

Use this template to:

  • Start a new debt register
  • Standardize debt documentation
  • Track debt across team/project

ADR_TEMPLATE.md

Architecture Decision Record template including:

  • Context and problem statement
  • Options considered
  • Decision rationale
  • Consequences (positive and negative)
  • Implementation plan

Use this template to:

  • Document major technical decisions
  • Prevent future "why did we do this?" questions
  • Track technical debt incurred by decisions

Best Practices

Analysis Best Practices

  • Run analysis regularly (weekly or bi-weekly)
  • Combine automated + manual review for comprehensive coverage
  • Focus on high-churn areas first for maximum impact
  • Involve the team in debt identification
  • Be objective - all codebases have debt

Documentation Best Practices

  • Be specific - include file names, line numbers, examples
  • Explain impact - why does this matter?
  • Propose solutions - don't just complain, suggest fixes
  • Estimate effort - helps with prioritization
  • Track trends - is debt increasing or decreasing?

Remediation Best Practices

  • Fix critical items immediately - especially security
  • Allocate consistent time - 20% of sprint capacity
  • Celebrate wins - track and recognize debt reduction
  • Don't let perfect be the enemy of good - incremental improvement
  • Prevent new debt - easier than fixing old debt

Communication Best Practices

  • Make debt visible - share metrics with stakeholders
  • Educate on impact - connect debt to business outcomes
  • Get buy-in - explain ROI of debt reduction
  • Regular updates - include in sprint reviews
  • Avoid blame - focus on improvement, not fault

Example Workflow

Complete workflow from analysis to resolution:

Week 1: Analysis

# Run automated analysis

python3 scripts/detect_code_smells.py src --output markdown > debt_analysis.md

python3 scripts/analyze_dependencies.py package.json >> debt_analysis.md

# Manual review of critical areas

# - Authentication logic

# - Payment processing

# - Data models

Week 1-2: Documentation

# Create debt register from template

cp assets/DEBT_REGISTER_TEMPLATE.md TECHNICAL_DEBT.md

# Add findings to register with:

# - Category and severity

# - Impact assessment

# - Effort estimation

# - Priority assignment

Week 2: Prioritization

# Team review session

# - Review all high/critical items

# - Discuss quick wins (high impact, low effort)

# - Allocate sprint capacity

# - Create tickets for top 5 items

Weeks 3-6: Remediation

# Sprint work

# - Fix 2-3 debt items per sprint

# - Update debt register as items resolved

# - Create ADRs for major refactoring decisions

# - Monitor metrics

Monthly: Review

# Trend analysis

# - Total debt (should decrease)

# - New debt rate (should be low)

# - Age of oldest items (should decrease)

# - Categories most affected

# Adjust strategy based on trends

Success Metrics

Track these metrics to measure debt reduction effectiveness:

Quantity Metrics:

  • Total debt items (trending down)
  • Debt by severity (zero critical)
  • Debt items per 1000 LOC

Quality Metrics:

  • Test coverage (trending up)
  • Cyclomatic complexity (trending down)
  • Average file/function size (stable or decreasing)

Velocity Metrics:

  • Debt items resolved per sprint
  • New debt items per sprint (should be low)
  • Time to resolve (should decrease)

Business Metrics:

  • Bug rate (should decrease)
  • Feature delivery speed (should increase)
  • Developer satisfaction (should increase)
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card