tech-debt

Triage technical debt signals in Polars, NumPyro, PyMC, and BLS codebases into a prioritized backlog.

Updated Jun 20, 2026
One-click install
npx skills add https://github.com/lowmason/agent-skills --skill tech-debt-lowmason
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: tech-debt
Source: https://github.com/lowmason/agent-skills/tree/main/tech-debt
Command: npx skills add https://github.com/lowmason/agent-skills --skill tech-debt-lowmason

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve?

Use when auditing a research or data codebase for technical debt — the cruft that accretes when exploratory analysis lives next to production pipelines. Identify, categorize, and prioritize that debt: use for a periodic code-health triage, cleaning up before handing a project to someone else, deciding what to refactor next, or asking what's safe to delete here?. Trigger on: abandoned approaches in archive/ or old/ dirs, scratch/scratchpad notebooks sitting beside production modules, duplicated v1/v2 scripts or whole repos (e.g. alt_nfp vs alt-nfp vs alt_nfp_bsts), hardcoded /Users/ or absolute file paths, type-checker-silenced regions (type: ignore, sprawling Optional/Any), complex modules with no tests, empty or placeholder READMEs and "Add your description here" pyproject descriptions, committed .env files with API keys, raise NotImplementedError / TODO / FIXME placeholders, and reproducibility hazards (wall-clock time leaking into a pipeline, missing seeds, as-of/vintage joins without guards). Also trigger when asked to estimate refactor effort, build a maintenance backlog, or distinguish dead exploratory code (DELETE) from load-bearing-but-fragile code (HARDEN). Tuned for a Polars / NumPyro / PyMC / BLS-ETL / Trino stack.

Core Features & Use Cases

  • Sweep and classify debt signals across a repository to surface candidates for review.
  • Decide DELETE vs HARDEN to keep production paths healthy while discarding throwaway explorations.
  • Prioritize findings by impact and effort to generate a minimal, actionable backlog for maintenance.
  • Use on Polars / NumPyro / PyMC / BLS ETL / Trino stacks to improve reproducibility and maintainability.

Quick Start

Run scripts/scan.sh <repo> to surface debt signals and begin triage.

Frequently Asked Questions about tech-debt

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I identify and triage technical debt in research code?

To identify technical debt in research code, scan the repository for signals like abandoned directories, scratch notebooks, duplicated scripts, and hardcoded paths. Triage these signals by deciding whether to DELETE dead exploratory code or HARDEN load-bearing but fragile production modules.

What is the best way to clean up scratch notebooks and duplicated v1 v2 scripts in a data pipeline?

Clean up scratch notebooks and duplicated scripts by classifying them as either throwaway exploratory code to DELETE or load-bearing modules to HARDEN. Prioritize findings by impact and effort to generate a minimal, actionable maintenance backlog.

How do I find reproducibility hazards and hardcoded absolute file paths in a Polars codebase?

Find reproducibility hazards and hardcoded absolute file paths in a Polars codebase by sweeping for signals like missing seeds, wall-clock time leaking into pipelines, unguarded as-of joins, and /Users/ paths. Surface these findings as actionable technical debt.

Can I use this technical debt triage process on a NumPyro and PyMC stack?

Yes, you can use this technical debt triage process on a NumPyro and PyMC stack. It is tuned to audit archives, scratch notebooks, and production modules across Polars, NumPyro, PyMC, and BLS ETL environments.

When should I harden rather than delete fragile code during a codebase audit?

Harden rather than delete fragile code during a codebase audit when the module is load-bearing for production pipelines but exhibits debt signals like silenced type checkers, missing tests, or reproducibility hazards. Delete only dead exploratory code.