Skip to content
Development
Skill

/debt-ops-add

Register a deferred decision in the tech-debt registry. Trigger by judgment, not a marker scan, whenever a future reader would ask "why this way?": an unmade decision, stub, loosened type, bypassed check, swallowed error, a default picked "for now", or a TODO/FIXME/HACK/XXX

From plugin
agentic-tech-debt
98 skills

Claude Code

$ npx -y skills add bcanfield/agentic-tech-debt --skill debt-ops-add --agent claude-code

SKILL.md

debt-ops-add.SKILL.md
name: debt-ops-add
description: 'Register a deferred decision in the tech-debt registry. Trigger by judgment, not a marker scan, whenever a future reader would ask "why this way?": an unmade decision, stub, loosened type, bypassed check, swallowed error, a default picked "for now", or a TODO/FIXME/HACK/XXX marker. Trigger immediately whenever you defer work, or when the user asks to log/register tech debt. Over-register freely; the developer drops with "drop A", "drop A,C", or "drop all".'

debt-ops-add — register a tech-debt entry

Call the bundled `register.py` via your shell tool. It lives in this skill's `scripts/` directory — reference it with the relative path below (your agent resolves it against the skill root). The helper writes the entry under the repo's detected registry dir (default `docs/debt/`), assigns a short batch letter (A, B, C…), and prints exactly one line: `+1 entry: <slug> (<letter>)`. That stdout IS the user-facing announcement — add no commentary before or after.

The call

python3 scripts/register.py \
  --slug <slug> \
  --principal <effort, e.g. 2d, 1w, unknown> \
  --interest <ongoing cost, e.g. "+30min/incident", unknown> \
  --hotspot <path or module, e.g. pricing/engine.ts, unknown> \
  --business-capability <e.g. checkout, billing, unknown> \
  --payoff-trigger <concrete trigger, or "unknown"> \
  --quadrant <reckless-inadvertent|reckless-deliberate|prudent-inadvertent|prudent-deliberate> \
  --category <migration|documentation|testing|code_quality|dead_code|code_rot|expertise|release|infrastructure|planning> \
  --ai-authored <true|false> <<'EOF'
<body: 2-5 sentences — what the debt is, why it exists, observed symptoms>
EOF

The helper:

  • Generates the timestamp `id` itself (no `date` call needed).
  • Resolves filename collisions when two registrations land in the same second.
  • Tracks the letter mapping in `~/.cache/debt-ops/cache/<repo-hash>/current-turn.txt`

(override the base with `DEBT_OPS_CACHE`) so the user can drop by letter.

Slug

1–4 word kebab-case label of what the debt is. Examples: `cancelled-promotion-callback`, `legacy-auth-shim`, `unfinished-rate-limiter`. Keep it short — the body carries the context.

Schema notes

  • **Quadrant** (Fowler): `reckless-inadvertent` (didn't know better),

`reckless-deliberate` (knew, did it anyway), `prudent-inadvertent` (learned afterward), `prudent-deliberate` (deliberate, with a payoff plan).

  • **Category** (Google / Jaspan-Green): pick the closest match.
  • **payoff_trigger: unknown** is first-class. Don't manufacture a trigger to fill

the field — `unknown` ages into stale review and that's the point.

  • **ai_authored: true** is the leading behavioral signal — be honest.

Drops

  • `drop A`, `drop A,C`, `drop all` — on tools with a debt-ops hook adapter this is

handled automatically. Without an adapter (skills-only tool), delete the matching entry yourself: read `~/.cache/debt-ops/cache/<repo-hash>/current-turn.txt` for the letter → filename mapping, then `rm <registry-dir>/<filename>`.

  • `drop it` or `drop <slug>` — delete it yourself:

`rm <registry-dir>/<id>-<slug>.md` (default registry dir `docs/debt/`). Treat dropping as cheap — over-registering is the intended posture.

Don't

  • Don't ask the developer for confirmation before writing. The discipline is "no

permission prompt; just do it."

  • Don't write the file directly with an editor tool — letter assignment depends on

going through `register.py`.

  • Don't echo or paraphrase the helper's output. The shell tool result is already

visible to the user.

  • Don't fill `payoff_trigger` with a guess to seem certain.
Read more
@bcanfield
Ships withagentic-tech-debt

Catches AI-introduced tech debt at write-time Works with any coding agent. Any stack. Two decades of tech-debt research, distilled into a plugin and validated across dozens of codebases.

Stars on GitHub

Momentum

stars in total
9
Star history of bcanfield/agentic-tech-debt on GitHub, a chart by star-history.com

Other skills on agentic-tech-debt.

add

add

Register a deferred decision in the debt registry. Trigger by judgment, not a marker scan, whenever a future reader would ask…

init

init

Write or refresh the `## Tech debt operations` section in CLAUDE.md so a team shares one source of truth for debt-ops disciplines…

metrics

metrics

Print a debt-ops health summary from the metrics log, covering registration rate, hook feedback action rate, ADR creation, and…

review

review

Audit the debt registry, rank survivors by churn × Fowler quadrant, surface a top-N list, then walk paydown on user follow-up.…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc13d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react2d252k
@facebook@facebookInstall Skill

Questions about debt-ops-add.

Which coding agents can use debt-ops-add?
debt-ops-add installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.