Command

okulo debt

Separate active vs inactive debt and estimate hours (and money) you are losing.

planningcost

When to use it

You need a prioritization story for leads/PMs: what still costs time every month.

Usage

okulo debt [repo] [options]

Options

OptionDefaultDescription
--categoryallactive-debt, inactive-debt, healthy-active, healthy-stable
--hourly-rate—Enables money estimates
--currencyUSDCurrency label
--hours-per-change2Hours for a typical change in healthy code
--hours-per-bugfix4Hours for a typical bugfix in healthy code
--unhealthy-below8Health threshold treated as debt

Examples

Active debt with cost

okulo debt --category active-debt --hourly-rate 60 --currency EUR

Scope to one product area

okulo debt --components backend --hourly-rate 80 --hours-per-change 3

JSON for a dashboard

okulo debt -f json -o debt.json

Sample output

Illustrative terminal output (column layout matches the real CLI):

Technical debt  health × change frequency over 6 months
file                      category      health  revs  overhead  waste/mo  12m forecast  refactor  payback
────────────────────────  ────────────  ──────  ────  ────────  ────────  ────────────  ────────  ───────
src/billing/invoice.py    active-debt      3.1    48     +96%     14.2h        170h      21h     1.5m
web/checkout/Cart.tsx     active-debt      4.8    31     +58%      7.1h         85h      13h     1.8m
legacy/report_v1.py       inactive-debt    2.9     1     +102%     0.2h        2.4h      18h      90m
lib/auth/session.ts       healthy-active   7.4    14       +8%     0.8h        9.6h       5h       -

2 active debt · 1 inactive debt · Estimated waste: 21.5h/month ≈ 1,290 EUR
Active debt causes 94% of the waste; refactoring all active debt ≈ 34h

How to read it

Tips

Related