Skip to content
Back to skills

Add

ASecurity

Register a deferred decision in the 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 invokes /debt-ops:add. Over-register freely; the developer drops with "drop A", "drop A,C", or "drop all".

  • 8 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added June 6, 2026
developmentpythongobashtestingdocumentation

Works with

  • claude code
  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned June 6, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Add?

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

Security grade badge for Add
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/bcanfield-add/badge)](https://www.skillsdirectory.com/skills/bcanfield-add)

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: add
description: 'Register a deferred decision in the 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 invokes /debt-ops:add. Over-register freely; the developer drops with "drop A", "drop A,C", or "drop all".'
allowed-tools: Bash(python3 *), Bash(rm *)
# Hidden from `npx skills` discovery — this copy ships in the Claude Code plugin (uses ${CLAUDE_PLUGIN_ROOT}); the portable skills/ copy is the one for the skills CLI.
metadata:
  internal: true
---

# /debt-ops:add — register a tech-debt entry

Call `register.py` via Bash. 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

```bash
python3 ${CLAUDE_PLUGIN_ROOT}/skills/add/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 `$CLAUDE_PLUGIN_DATA/cache/<repo-hash>/current-turn.txt` 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` — the user types this; a UserPromptSubmit hook deletes the matching entries and surfaces a one-line confirmation. You don't act on those.
- `drop it` or `drop <slug>` — you delete it yourself: `rm <registry-dir>/<id>-<slug>.md` (the registry dir named in Discipline 3; default `docs/debt/`). Treat dropping as cheap — over-registering is the intended posture.

## Don't

- Don't ask the developer for confirmation before writing. Discipline 1 says "no permission prompt; just do it."
- Don't use the `Write` tool to create the file directly — letter assignment depends on going through `register.py`.
- Don't echo or paraphrase the helper's output. The Bash tool result is already visible to the user.
- Don't fill `payoff_trigger` with a guess to seem certain.

Files in this skill

  • SKILL.md3.5 KB
  • scripts/register.py6.8 KB

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.