Debt
Record a technical-debt item (DEBT-NNN) — registration only by default, or register + auto-generate a fix TASK with --task. Use when PM mentions "add tech debt", "record tech debt", "technical debt", "tech debt item", "refactor tracking", "технический долг", "запиши техдолг", or any request to capture deferred refactoring / cleanup work. Trigger liberally — under-triggering loses debt visibility; over-triggering is recoverable (PM can delete or defer).From its SKILL.md
npx -y skills add cryndoc/polisade-orchestrator --skill debtAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
15.0 KB, as published. Nobody here has run it
/polisade:debt [описание] [--task] — Добавить техдолг
Быстрое добавление технического долга. По умолчанию создаёт только DEBT
(регистрация). Передай --task, чтобы сразу завести связанную TASK и положить
её в readyToWork.
Использование
/polisade:debt Рефакторинг модуля авторизации
/polisade:debt Обновить зависимости до последних версий
/polisade:debt Добавить индексы в БД --task # сразу создать TASK
- Без флага — создаётся только DEBT со статусом
ready. Для последующей декомпозиции в TASK используй/polisade:tasks DEBT-XXX(когда готов работать над долгом). - С
--task— создаётся параDEBT + TASK, TASK добавляется вreadyToWork(поведение симметрично старому default).
Алгоритм
-
Распарсь args. Выдели
--task(если есть), остаток склей в описание. -
Прочитай
.state/PROJECT_STATE.json. Извлекиsettings.debt.autoCreateTask(default:falseесли ключ отсутствует). -
Определи
create_task:create_task = trueесли args содержит--taskилиsettings.debt.autoCreateTask == true.create_task = falseво всех остальных случаях.- У команды
/polisade:debtнет флага отказа от TASK. Чтобы получить поведение «только DEBT» в мигрированном проекте — PM либо выключаетsettings.debt.autoCreateTask: falseв.state/PROJECT_STATE.json, либо принимает legacy-поведение (TASK создаётся + deprecation banner).
-
Вычисли next-id для DEBT по протоколу из
skills/tasks/references/compute-next-id.md(единый max по.state/counters.json,PROJECT_STATE.artifactIndexи file-scan). Еслиcreate_task— также вычисли next-id для TASK. При Counter drift (на диске выше, чем в counters.json) — АБОРТ с сообщением «Запустиpython3 {plugin_root}/scripts/polisade_sync.py . --apply --yesи повтори». Ни одного файла не пиши до устранения drift'а. -
Write-guard. Перед
Writeпроверь, чтоbacklog/tech-debt/DEBT-{N}-slug.mdне существует иDEBT-{N}отсутствует вstate.artifactIndex(и legacystate.artifacts). Еслиcreate_task— ту же проверку наtasks/TASK-{M}-slug.md/TASK-{M}. При коллизии — АБОРТ с отсылкой к/polisade:sync --apply. -
Создай
backlog/tech-debt/DEBT-XXX-slug.mdпо шаблону ниже. Определи категорию автоматически или спроси. -
Если
create_task— создайtasks/TASK-XXX-slug.mdсо ссылкой на DEBT. Прочитай файлы из «Предлагаемое решение» DEBT, найди конкретные функции/классы, впиши в TASK точные пути + идентификаторы.⛔ КРИТИЧНО: TASK-файл ДОЛЖЕН быть ровно
tasks/TASK-XXX-*.mdв корневой папкеtasks/. НЕ вdocs/tasks/, НЕ вdocs/TASK-*.md, НЕ вbacklog/tasks/./polisade:implementищет таски ТОЛЬКО в корневойtasks/. Если папки нет —mkdir -p tasks. -
Инкрементируй счётчики.
counters.json[DEBT] = N_debtвсегда;counters.json[TASK] = N_task— только еслиcreate_task. Фиксируй именно next-id из шага 4. -
Обнови
.state/PROJECT_STATE.json:- Добавь DEBT со статусом
ready(вartifactIndex). - Если
create_task— добавь TASK со статусомreadyвreadyToWorkи вartifactIndex, пропишиparent: DEBT-XXX.
- Добавь DEBT со статусом
-
Выведи подтверждение строго по таблице:
create_task--taskпередан?Блок подтверждения Deprecation banner? falseнет «ТЕХДОЛГ ЗАРЕГИСТРИРОВАН» (без TASK) нет trueда «ТЕХДОЛГ ДОБАВЛЕН» (с TASK) нет trueнет (legacy autoCreateTask: true)«ТЕХДОЛГ ДОБАВЛЕН» (с TASK) да, поверх блока ⛔ Частая ошибка: показать deprecation banner и блок «ЗАРЕГИСТРИРОВАН» (без TASK) одновременно — это внутреннее противоречие: banner предупреждает о легаси-создании TASK, которая уже создана на шагах 6-9, поэтому блок должен быть именно «ДОБАВЛЕН» с TASK. Banner не отменяет создание TASK, он только сигнализирует PM о переходе на новый default.
Opt-in TASK: флаг vs настройка
/polisade:debt по умолчанию только регистрирует долг — это важное
изменение с v2.21.0. Логика opt-in:
| Источник сигнала | Поведение |
|---|---|
/polisade:debt <d> + settings.debt.autoCreateTask: false (новый проект) | Только DEBT |
/polisade:debt <d> --task | DEBT + TASK (флаг явный) |
/polisade:debt <d> + settings.debt.autoCreateTask: true (мигрированный) | DEBT + TASK + deprecation warning |
/polisade:debt <d> --task + настройка любая | DEBT + TASK (флаг побеждает) |
Когда понадобилась TASK уже после регистрации — /polisade:tasks DEBT-XXX
декомпозирует DEBT в 1-3 атомарных TASK (pattern как у BUG).
Категории техдолга
| Категория | Примеры |
|---|---|
| refactoring | Улучшение структуры кода, разделение модулей |
| dependencies | Обновление библиотек, миграция версий |
| performance | Оптимизация запросов, кэширование |
| security | Улучшение безопасности, аудит |
| testing | Добавление тестов, улучшение покрытия |
| infrastructure | CI/CD, конфигурация, мониторинг |
Шаблон файла DEBT
---
id: DEBT-XXX
title: "[Описание]"
status: ready
created: YYYY-MM-DD
priority: P3
category: refactoring
task: null # TASK-XXX (опционально — при --task или через /polisade:tasks DEBT-XXX)
---
# Tech Debt: [Описание]
## Описание
[Описание из команды]
## Почему это важно
[Какие проблемы создаёт текущее состояние]
## Предлагаемое решение
[Как исправить]
## Риски
[Что может пойти не так]
## Критерии готовности
- [ ] [Конкретный критерий]
- [ ] Тесты проходят
- [ ] Код ревью пройден
Шаблон TASK при --task
Используется только когда TASK создаётся одновременно с DEBT — по
флагу --task или из-за settings.debt.autoCreateTask: true. Без флага
этот шаблон не применяется.
---
id: TASK-XXX
title: "[Описание техдолга]"
status: ready
created: YYYY-MM-DD
parent: DEBT-XXX
priority: P3
depends_on: []
---
# Задача: [Описание]
## Контекст
**DEBT:** [[DEBT-XXX]]
**Зачем:** [Какую проблему решает этот рефакторинг]
## Scope
**Входит:** [конкретные файлы/модули для рефакторинга]
**НЕ входит:** [что трогать НЕ нужно, даже если похоже]
## Что нужно сделать
[Уточнённое из DEBT с конкретными файлами/функциями]
## Критерии приёмки
- [ ] [Фальсифицируемый критерий — проверяемый YES/NO]
- [ ] Тесты проходят
- [ ] Существующее поведение сохранено
## Verification
```bash
# Команды для проверки что рефакторинг не сломал поведение
## Формат подтверждения
### Без TASK (default)
═══════════════════════════════════════════ ТЕХДОЛГ ЗАРЕГИСТРИРОВАН ═══════════════════════════════════════════
ID: DEBT-001 Описание: Рефакторинг модуля авторизации Файл: backlog/tech-debt/DEBT-001-auth-refactor.md Категория: refactoring Приоритет: P3 Статус: ready
TASK не создана — долг зафиксирован для планирования.
═══════════════════════════════════════════ СЛЕДУЮЩИЕ ШАГИ: → /polisade:tasks DEBT-001 — декомпозировать в TASK-и когда готов → /polisade:debt <описание> --task — в следующий раз создать TASK сразу → /polisade:state — обзор бэклога ═══════════════════════════════════════════
### С TASK (`--task` или legacy `autoCreateTask: true`)
Этот блок используется для **ОБОИХ** случаев, когда TASK создана —
по явному флагу `--task` или из-за legacy-настройки. Заголовок всегда
«ТЕХДОЛГ ДОБАВЛЕН» (не «ЗАРЕГИСТРИРОВАН»), потому что TASK реально
создаётся на шагах 6-9 и лежит в `readyToWork`.
═══════════════════════════════════════════ ТЕХДОЛГ ДОБАВЛЕН ═══════════════════════════════════════════
ID: DEBT-001 Описание: Рефакторинг модуля авторизации Файл: backlog/tech-debt/DEBT-001-auth-refactor.md Категория: refactoring Приоритет: P3 Статус: ready
Создана задача: TASK-001 Файл: tasks/TASK-001-auth-refactor.md
═══════════════════════════════════════════ СЛЕДУЮЩИЙ ШАГ: → /polisade:implement TASK-001 — выполнить сразу → /polisade:continue — автономная работа → /polisade:state для обзора бэклога ═══════════════════════════════════════════
### Deprecation banner (только в legacy-ветке: `autoCreateTask: true` + без `--task`)
Добавляй **в самом начале** вывода, **поверх** блока «ТЕХДОЛГ ДОБАВЛЕН»
(см. таблицу в шаге 10 алгоритма). TASK при этом **создаётся** — banner
не отменяет поведение, а только предупреждает о планируемом удалении
legacy-пути.
⚠️ DEPRECATION WARNING
─────────────────────────────────────────
TASK создана автоматически из-за legacy-настройки
settings.debt.autoCreateTask: true (унаследована при миграции
проекта). В следующей minor-версии Polisade Orchestrator это
поведение будет удалено.
Чтобы перейти на новый default уже сейчас:
• отредактируй .state/PROJECT_STATE.json →
settings.debt.autoCreateTask: false
• используй флаг /polisade:debt <описание> --task когда TASK нужна
• используй /polisade:tasks DEBT-XXX для ленивой декомпозиции
─────────────────────────────────────────
## Приоритет техдолга
По умолчанию техдолг получает **P3** — ниже фич и багов.
Исключения:
- Security issues → P1
- Critical performance → P1
- Blocking dependencies → P2
## Важно
- По умолчанию `/polisade:debt` **не создаёт TASK** — только регистрирует долг.
Используй `--task` или `/polisade:tasks DEBT-XXX` для создания задачи.
- `/polisade:implement` работает только с TASK-XXX.
- `/polisade:implement DEBT-XXX` deprecated — всё ещё работает и создаст TASK,
если её нет, потому что это явная opt-in команда на работу
(PM прямо просит реализовать артефакт).
- Хороший момент для техдолга — между фичами или в конце спринта.
- Мигрированные проекты (`settings.debt.autoCreateTask: true`) продолжают
получать автосозданную TASK, но с deprecation-баннером до момента,
когда PM переключит настройку.