Skip to content
Back to skills

Debt

ASecurity

Register and audit DELIBERATE technical debt via `// anti-hall: <ceiling>,<when>` markers — a budgeted, harvestable alternative to vague TODOs. Greps the tree for markers, parses each ceiling + payback trigger, and flags rot-risk (markers with no trigger, or in code untouched past a staleness threshold). Use when the user says \"track this debt\", \"audit our debt\", \"what shortcuts did we take\", \"show the anti-hall markers\", or \"is this debt rotting\". NOT a license to leave work undone...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 2, 2026
ai-agentsgonodegitbackend

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add talas9/anti-hall --skill debt --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Debt?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Debt
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/talas9-debt/badge)](https://www.skillsdirectory.com/skills/talas9-debt)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: debt
description: "Register and audit DELIBERATE technical debt via `// anti-hall: <ceiling>,<when>` markers — a budgeted, harvestable alternative to vague TODOs. Greps the tree for markers, parses each ceiling + payback trigger, and flags rot-risk (markers with no trigger, or in code untouched past a staleness threshold). Use when the user says \"track this debt\", \"audit our debt\", \"what shortcuts did we take\", \"show the anti-hall markers\", or \"is this debt rotting\". NOT a license to leave work undone — see boundaries."
---

# anti-hall:debt

A TODO says *something is unfinished* and rots silently. An **`anti-hall:` marker** says
*this shortcut was deliberate, here's the budget I accepted, and here's exactly when it must be
paid down* — so it can be harvested, audited, and flagged when it starts to rot. This skill is the
register and the auditor for those markers.

## The marker

Place an inline comment at the shortcut, in whatever comment syntax the file uses:

```
// anti-hall: <ceiling>, <when>
#  anti-hall: <ceiling>, <when>
/* anti-hall: <ceiling>, <when> */
```

- **`<ceiling>`** — the budget you *consciously accepted*: the limit past which this shortcut is no
  longer OK. Make it checkable. Good: `30 lines`, `O(n^2)`, `2 retries`, `single tenant`. Bad:
  `some`, `a bit`.
- **`<when>`** — the **payback trigger**: the concrete condition that makes this debt due. Good:
  `when >3 callers`, `when n>1000`, `when we drop node 18`, `when this hits prod`. This is the part
  that keeps debt from rotting — it names the signal to watch for.

Everything up to the **first comma** is the ceiling; everything after is the trigger.

```js
// anti-hall: 30 lines, when a 3rd backend needs it
function fakeRouter(x) { /* hard-coded 2-way switch, fine for now */ }
```

## What `/anti-hall:debt` does

It runs `plugins/anti-hall/scripts/harvest-debt.js` (pure Node, cross-platform, no deps), which:

1. **Greps** the target tree (default cwd; `--dir <path>`) for `anti-hall:` markers across all
   comment styles, skipping `.git`, `node_modules`, dot-dirs, and binaries.
2. **Parses** each into `{file, line, ceiling, when}`.
3. **Flags rot-risk** (`no-trigger`) when either:
   - **No trigger** — `<when>` is missing/empty. A deliberate skip with no payback condition has
     nothing to watch for, so it silently becomes permanent. This is the headline rot signal.
   - **Stale** — the file's last git commit touching it is older than the staleness threshold
     (default 90 days; `--stale-days N`). Budgeted debt nobody has revisited in a quarter is debt
     that's drifting out of mind. (Skipped automatically when git isn't available — fail-open.)

Invoke:

```
node plugins/anti-hall/scripts/harvest-debt.js              # human table
node plugins/anti-hall/scripts/harvest-debt.js --json       # machine-readable
node plugins/anti-hall/scripts/harvest-debt.js --dir src --stale-days 60
```

## Reading the report

```
anti-hall debt register   (3 markers · 1 rot-risk)

  src/router.js:12    ceiling: 30 lines   when: a 3rd backend needs it      ok
  src/cache.js:88     ceiling: O(n^2)     when: n>1000                      ok
  src/legacy.js:5     ceiling: 2 deps     when: —                  ⚠ rot: no trigger
```

- **ok** — budgeted debt with a live trigger; nothing to do until the trigger fires.
- **⚠ rot: no trigger** — add a `<when>`, or pay it down now. Don't leave it.
- **⚠ rot: stale (Nd)** — re-confirm the budget still holds; the world may have moved past it.

Use it as a **gate before a release or refactor**: harvest, and make sure no rot-risk marker is
hiding a shortcut the upcoming change would expose.

## Boundaries (read this)

- **A marker is not permission to skip real work.** anti-hall treats lazy `TODO`/placeholder/stub
  patterns as *blockers*, and that doesn't change. The marker is the **narrow, honest exception**:
  a debt you can defend out loud — with a budget and a trigger — and that you've registered so it
  can't hide. If you can't name a real ceiling and a real trigger, it's not deliberate debt; it's
  unfinished work. Finish it.
- **The ceiling is a contract.** If the code already exceeds its own stated ceiling, the marker is
  past due — treat it like a failing check, not a note.
- **Don't mass-annotate to silence a guard.** Sprinkling markers to make a backlog "look managed"
  is slop. One marker per genuinely-deliberate shortcut.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.