mcpField
T
tech-debt-analyzer

tech-debt-analyzer

github.com/wyattowalshTesting & quality548 installsUpdated 8w ago
Repository

About tech-debt-analyzer

A skill for systematically inventorying, assessing, and planning technical debt for development teams tracking codebase maintainability. It combines scripts with evidence-based confidence scoring and supports baseline tracking and risk-effort prioritization, but does not perform fixes.

Key features

  1. 01Multi-pass codebase debt scans
  2. 02Evidence and confidence scoring
  3. 03Risk-effort prioritization
  4. 04Phased remediation roadmaps
  5. 05Baseline comparison and dashboards

Use cases

  1. 01Inventory code complexity and dead code
  2. 02Find stale dependencies and inconsistent patterns
  3. 03Compare scans and track debt changes
  4. 04Plan phased technical-debt remediation

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/wyattowalsh/agents --skill tech-debt-analyzer

After installing, type/tech-debt-analyzerin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

evals/
evals.json
explicit-scan.json
implicit-trigger.json
negative-control.json
prioritize-mode.json
roadmap-mode.json
track-mode.json
references/
complexity-metrics.md
debt-taxonomy.md
prioritization-framework.md
remediation-templates.md
scripts/
check.py
complexity-scanner.py
dead-code-detector.py
dependency-staleness-checker.py
pattern-consistency-checker.py
scripts/asset_toolkit/
__init__.py
_shared.py
common.py
package.py
validate_evals.py
validate_hooks.py
validate_skill.py
templates/
dashboard.html

Details

From the project README

Tech Debt Analyzer

Systematic technical debt inventory, prioritization, and remediation planning. Multi-pass analysis with confidence scoring and evidence-based findings.

Scope: Debt inventory and tracking only. NOT for code review (review), refactoring execution, or dependency updates.

Canonical Vocabulary

TermDefinition
debt itemA discrete tech debt finding with category, severity, confidence, and evidence
categoryDebt classification: design, test, documentation, dependency, infrastructure
severityImpact level: CRITICAL, HIGH, MEDIUM, LOW
confidenceScore 0.0-1.0 per item; >=0.7 report, 0.3-0.7 flag, <0.3 discard
complexityCyclomatic (decision paths) or cognitive (human comprehension difficulty)
dead codeFunctions, classes, or imports with no references in the codebase
stalenessDays since a dependency's current version was superseded
inconsistencySame pattern implemented differently across files
remediationSpecific fix action with effort estimate and risk level
debt scoreAggregate metric: sum of (severity_weight x confidence) across all items
baselinePrevious scan stored at ~/.{gemini
heatmapVisual density of debt items per file or directory
risk x effortPrioritization matrix: impact vs. remediation cost

Dispatch

$ARGUMENTSMode
scan or scan <path>Full codebase debt inventory (or scoped to path)
analyze <file/dir>Targeted deep analysis of specific file or directory
prioritizeRank all debt items by risk x effort matrix
roadmapGenerate phased remediation plan
reportRender dashboard visualization
trackCompare current scan against previous baseline
EmptyShow mode menu with descriptions and examples

Mode: Scan

Full codebase debt inventory. Run all 4 analysis scripts, aggregate results, assign categories and severities.

Scan Step 1: Project Profile

Run uv run python scripts/complexity-scanner.py <path> to get complexity metrics. Parse JSON output. Flag functions with cyclomatic_complexity > 10 as HIGH, > 5 as MEDIUM.

Scan Step 2: Dead Code Detection

Run uv run python scripts/dead-code-detector.py <path> to find unused code. Parse JSON output. Each unused item becomes a debt item (category: design, severity by confidence).

Scan Step 3: Dependency Staleness

Run uv run python scripts/dependency-staleness-checker.py <path> to check outdated packages. Parse JSON output. Deprecated packages are CRITICAL. Staleness > 365 days is HIGH.

Scan Step 4: Pattern Consistency

Run uv run python scripts/pattern-consistency-checker.py <path> to detect inconsistencies. Parse JSON output. Each inconsistency becomes a debt item (category: design).

Scan Step 5: AI-Augmented Analysis

After script-based detection, perform additional analysis:

  1. Documentation gaps — scan for undocumented public APIs, missing README sections, stale comments
  2. Test coverage gaps — Grep for untested modules, missing edge cases, test-to-code ratio
  3. Infrastructure debt — outdated CI configs, missing linting, inconsistent tooling
  4. Design smells — God classes, feature envy, shotgun surgery patterns

Assign confidence scores (0.0-1.0) per finding. Research-validate HIGH/CRITICAL items using Grep and codebase evidence.

Scan Step 6: Aggregate and Classify

Merge all findings into a unified inventory:

  • Deduplicate across script outputs
  • Assign categories from debt taxonomy (references/debt-taxonomy.md)
  • Calculate debt score: sum of (severity_weight x confidence)
  • Store baseline at ~/.{gemini|copilot|codex|claude}/tech-debt/<project-slug>-<date>.json

Present findings grouped by category, sorted by severity within each group.

Mode: Analyze

Targeted deep analysis of a specific file or directory. Run all 4 scripts scoped to the target. Apply the same 6-step scan process but with deeper per-function analysis. Include: function-level complexity breakdown, inline dead code, local pattern violations.

Mode: Prioritize

Rank debt items using risk x effort matrix. Load references/prioritization-framework.md.

Low EffortMedium EffortHigh Effort
High RiskP0: Fix immediatelyP1: Schedule next sprintP2: Plan for next quarter
Medium RiskP1: Schedule next sprintP2: Plan for next quarterP3: Backlog
Low RiskP2: Quick wins batchP3: BacklogP4: Accept or defer

For each debt item, estimate:

  • Risk: blast radius x severity x confidence
  • Effort: LOC affected x complexity x dependency count

Output a ranked list with priority labels (P0-P4).

Mode: Roadmap

Generate a phased remediation plan. Requires a prior scan (reads baseline from ~/.{gemini|copilot|codex|claude}/tech-debt/).

Phase structure:

  1. Quick Wins (P0 + low-effort P1): immediate fixes, minimal risk
  2. Structural (remaining P1 + high-risk P2): design improvements, refactoring
  3. Maintenance (P2 + P3): documentation, test coverage, dependency updates
  4. Strategic (P3 + P4): architecture changes, long-term improvements

Each phase includes: items, estimated effort, dependencies, success criteria.

Mode: Report

Render dashboard visualization. Requires a prior scan.

  1. Read the most recent baseline from ~/.{gemini|copilot|codex|claude}/tech-debt/
  2. Copy templates/dashboard.html to a temporary file
  3. Inject findings JSON into the <script id="data"> tag
  4. Open in browser or report the path

Dashboard sections: category pie chart, complexity heatmap, trend chart (if multiple baselines), prioritized backlog table.

Mode: Track

Compare current scan against previous baseline for longitudinal tracking.

  1. Run a fresh scan (Mode: Scan steps 1-6)
  2. Load previous baseline from ~/.{gemini|copilot|codex|claude}/tech-debt/<project-slug>-*.json (most recent)
  3. Compute delta: new items, resolved items, changed severities, score trend
  4. Present comparison report with trend indicators

State Management

  • State directory: ~/.{gemini|copilot|codex|claude}/tech-debt/
  • Create directory on first use with mkdir -p
  • Filename: <project-slug>-<YYYY-MM-DD>.json
  • Project slug: sanitized basename of the project root directory
  • Store after every scan; track mode reads historical baselines
  • Schema: { "project": str, "date": str, "score": float, "items": [...], "summary": {...} }

Reference Files

Load ONE reference at a time. Do not preload all references into context.

FileContentRead When
references/debt-taxonomy.md5 debt categories with subcategories and remediation templatesScan Step 6, classifying findings
references/complexity-metrics.mdCyclomatic and cognitive complexity definitions, thresholds, interpretationInterpreting complexity-scanner output
references/prioritization-framework.mdRisk x effort matrix, scoring rubric, priority definitionsPrioritize mode
references/remediation-templates.mdFix patterns by issue type, effort estimates, risk ratingsRoadmap mode, generating fix plans
ScriptWhen to Run
scripts/complexity-scanner.pyScan Steps 1, Analyze mode
scripts/dead-code-detector.pyScan Step 2, Analyze mode
scripts/dependency-staleness-checker.pyScan Step 3
scripts/pattern-consistency-checker.pyScan Step 4, Analyze mode
TemplateWhen to Render
templates/dashboard.htmlReport mode — inject findings JSON into data tag

Debt Item Structure

Every debt item follows this format:

  1. Location: [file:line] or [file:start-end] — exact source location
  2. Category: design | test | documentation | dependency | infrastructure
  3. Severity: CRITICAL | HIGH | MEDIUM | LOW
  4. Confidence: 0.0-1.0 score with evidence basis
  5. Description: What the debt is (1-2 sentences)
  6. Impact: Why it matters (blast radius, risk)
  7. Remediation: Recommended fix approach with effort estimate

Critical Rules

  1. Run all 4 analysis scripts before presenting findings — partial scans are labeled as such
  2. Every finding must have a confidence score backed by evidence (script output or codebase grep)
  3. Confidence < 0.3 = discard; 0.3-0.7 = flag as uncertain; >= 0.7 = report
  4. Never execute remediation — this skill inventories and plans, not fixes
  5. Store baseline after every full scan — longitudinal tracking depends on it
  6. Do not report style preferences as debt — only structural, behavioral, or maintainability issues
  7. Deduplicate across script outputs — same file:line should not appear twice
  8. Prioritize mode requires a prior scan — prompt user to run scan first if no baseline exists
  9. Always present the debt score (aggregate metric) in scan output
  10. Track mode must show delta (new/resolved/changed) — raw numbers without comparison are useless
  11. Dead code detection requires high confidence (>= 0.8) — false positives erode trust
  12. Load ONE reference file at a time — do not preload all references

Comments

Markdown supported