DebtRadar
  1. 01Scan
  2. 02Rank
  3. 03Triage
  4. 04Demo

Hundreds of notes.
One is about to hurt.

debtradar scores every TODO already in your code on how long it has sat there, how hot the file around it runs, and whether the person who wrote it still works here — then ranks them, so you fix the one that matters instead of reading all of them.

See 792 TODOs in n8n

n8n-io/n8n — scanned792 notes ranked across 4.3M lines. 227 of them nobody wrote down.

Field
live scan density

What it found in n8n, worst first

Open the full board
  1. critical
    01

    TODO: Later also has to be possible to add multiple ones with the name name. So array has to be possible

    packages/workflow/src/interfaces.ts:1799
    risk 82TODO2,684d oldchurn 100
  2. critical
    02

    TODO: Should not happen leave it for test now

    packages/workflow/src/node-helpers.ts:599
    risk 76TODO2,684d oldchurn 32
  3. critical
    03

    TODO: Remove the hardcoded default-values here and also in NodeSettings.vue

    packages/core/src/execution-engine/workflow-execute.ts:1820
    risk 76TODO2,476d oldchurn 47
  4. critical
    04

    TODO: Check what it really has when undefined

    packages/workflow/src/node-helpers.ts:1491
    risk 76TODO2,684d oldchurn 32

7

markers recognised

4

signals behind every score

0

issues filed in your tracker

Every TODO, ranked by what it will cost you.

DebtRadar walks your tree, parses comments in 30+ languages, and scores each finding on staleness, churn, author activity and marker severity.

Illustration — invented repository, real scoring signals

acme/monorepo · push to main · a1b2c3d

2,481 files parsed

27 critical

114 high

632 low

01critical98

// TODO: remove this before we ever touch prod auth

services/auth/session.ts:214

untouched 891d · author gone 2yDEFERRED DECISION
02critical94

// FIXME: race condition, patched with a sleep(200) lol

workers/queue/dispatch.go:77

untouched 402d · 31 commits/yrHACK / WORKAROUND
03high71

// HACK: duplicate of the v1 parser, delete when v2 ships

packages/parser/legacy.ts:12

untouched 233d · author gone 8moHACK / WORKAROUND
04high63

// pagination here breaks past 10k rows, needs keyset

api/handlers/list.py:56

untouched 128d · 14 commits/yrHIDDEN TODO
05low12

// NOTE: rename this variable someday

ui/components/Chart.tsx:9

untouched 41d · 1 commit/yrNOT ACTIONABLE

Three steps from blind spot to backlog.

Install once. Every push re-scans and re-ranks — there is nothing to run yourself.

01

Connect the repo

Install the GitHub App on the repositories you pick. It reads code and metadata, and the only thing it writes back is a neutral check on your pull requests. Want to scan a project you do not own? Fork it and install on your fork — the ranking is the same. GitLab is planned.

02

Scan & score

Every TODO, FIXME, HACK and XXX gets parsed, cross-referenced with git blame and file churn, then scored 0–100.

03

Triage the queue

Work the board worst-first. Move a severity by hand, ask Claude whether a finding is really actionable, or dismiss it. Nothing gets filed in your tracker.

It reads the comment like a senior engineer would.

A regex knows a TODO exists. Claude knows the one that says “temporary” has been temporary for three years, that it guards a payment path, and that the author left the company.

// TODO: signature validation disabled for staging — DO NOT SHIP

Claude-powered analysis

Signature validation is disabled on a production auth path — requests are accepted unverified whenever the staging flag leaks into a release build.

It was added for a demo two years ago, and the author's last commit was fourteen months back, so there is nobody left to ask.

VERDICT

ACTIONABLE

SCOPE

SINGLE-FILE

CONFIDENCE

0.86

Built for repos that got away from you.

Indexed, scored, and explained — so the four that matter surface before the four hundred that do not.

Full-tree scanning
Every TODO, FIXME, HACK and XXX across 18 languages and formats. The first scan reads the whole tree; after that, only what changed.
Risk-weighted ranking
Age, file churn, author activity and marker severity fold into one 0–100 score you can actually sort by.
Claude comment reads
Semantic analysis of what the comment actually means, not just which keyword it matched.
Triage, not another backlog
A board you work worst-first. Override a severity by hand, dismiss in bulk, and nothing gets filed in your tracker.
Every score explains itself
Open any finding and see the four factors behind its number, and how many points each one contributed.
It never changes your code
Read access to code and metadata. The one thing debtradar writes is a neutral check on a pull request — it never edits a file, opens an issue, or leaves a comment.