READ-ONLY замер «ДОЛГА АВТОНОМНОСТИ» по журналу одобрений 02 (approvals.db) — сколько я спросил Антона за окно, сколько из этого ПРОТУХЛО (никто не ответил), по каким классам (машинный шум / логин-2FA / UAC-физика / деньги… Триггеры: “/ask-debt“, “долг автономности“, “сколько я спрашиваю“, “замер асков“, “что протухло в 02“, “ложные аски“, “почему я столько спрашиваю“, “autonomy debt“, “ask debt“
Installs into .claude/skills of the current project.
Are you the author of Ask Debt?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tonydzi-ask-debt)
---
name: ask-debt
description: "READ-ONLY замер «ДОЛГА АВТОНОМНОСТИ» по журналу одобрений 02 (approvals.db) — сколько я спросил Антона за окно, сколько из этого ПРОТУХЛО (никто не ответил), по каким классам (машинный шум / логин-2FA / UAC-физика / деньги… Триггеры: “/ask-debt“, “долг автономности“, “сколько я спрашиваю“, “замер асков“, “что протухло в 02“, “ложные аски“, “почему я столько спрашиваю“, “autonomy debt“, “ask debt“"
version: 1.0.0
---
# /ask-debt — сколько я спрашиваю Антона и сколько из этого было зря
Метрика долга по правилу `asks-are-my-autonomy-debt`: **протухание аска — это не «Антон занят», это «я спросил там, где не следовало»**. Скилл считает эту долю, режет её по классам и вытаскивает ложные аски пофамильно.
**Движок:** `$USERPROFILE/.claude/scripts/ask_debt.py` (читает `$USERPROFILE/.claude/approvals.db`, снимки рядом в `_ask_debt_snapshots.json`). Никаких серверов и своих БД — AK-47.
## Запуск
```bash
python ~/.claude/scripts/ask_debt.py --days 30
```
Вывод — готовая markdown-таблица, её показываю Антону как есть (плюс блок 🧒 «Простыми словами» и вывод «что чиню сам»).
Полезные флаги:
| Флаг | Что делает |
|---|---|
| `--days 30` | окно замера (по умолчанию 30; `--days 0` = всё время) |
| `--html` | плюс дашборд в `$OBSIDIAN_VAULT/_Dashboards/Ask-Debt.html` (`--html <путь>` = свой путь) |
| `--json` | сырой json вместо markdown (для рутин/сторожей) |
| `--no-snapshot` | не сохранять снимок — просто посмотреть |
| `--db <путь>` | другая база (для тестов) |
Дашборд по умолчанию НЕ пишется — предлагаю его сам, когда Антон просит «покажи» или замер идёт в отчёт ([[prefer-visual-dashboards]]).
## Что в отчёте
1. **Шапка** — асков за окно, протухло (шт. и %), красных флагов, статусы, и дельта к прошлому замеру.
2. **Классы асков** — `Машинный шум` (сторож спрашивает разрешения на собственную работу) · `Деньги` · `Логин / 2FA` · `UAC / физика` · `Контент-гейт` · `Решения` · `Прочее`. Колонка «доля журнала» показывает, чем журнал забит; «% протухания» — где именно долг.
3. **Темп по неделям** — растёт долг или падает.
4. **🚩 Ложные аски** — тексты с «+ = да, займись» / «займись?» / «разобраться?». Это те, где ответ описывает МОЮ работу.
5. **⚠️ Мягкие флаги** — «+ = да, жму / поднять / запускаю»: я спрашиваю разрешение на собственный следующий шаг.
## Как читать (пороги)
- **% протухания по классу ≥70%** — класс сам по себе больной, не «Антон не успел».
- **`Машинный шум` в топе доли журнала** — сторож генерит вопросы о своей же работе; лечение на уровне КОДА сторожа, а не формулировки.
- **`Логин / 2FA` 100% протухания** — истинные блоки (руки Антона), но упакованы неверно: проси **руки** («разбуди узел», «нажми Разрешить»), а не разрешение, и одним клик-путём.
- **Флагов 0** — только тогда журнал чистый.
## Что делаю после замера (иначе замер бесполезен)
1. Каждый 🚩-аск прогоняю тестом: «это решение Антона или мой недоделанный шаг?» → мой → **иду и делаю сам**, аск не восстанавливаю.
2. Класс-лидер шума → задача на корень (гейт в самом стороже). ⚠️ Правку контура одобрений (`publish_canon.py`, `approval.py`) харнес мне блокирует — это работа под явным «+» Антона с показанным диффом, обходить нельзя.
3. Истинные блоки (`Логин / 2FA`, `UAC / физика`, `Деньги`) остаются его — Tier-2 не ослабляется ([[remote-approval-qqq]]); их лечим упаковкой: клик-путь + скриншот.
4. Снимок сохраняется автоматически → следующий замер покажет, стало лучше или хуже.
## Почему отчёт не может тихо соврать «стало лучше»
- Окно **скользящее**: старый протухший аск однажды просто выедет за `--days`, и долг «упадёт» сам. Поэтому в шапке печатается строка `⚠️ Из скользящего окна ВЫШЛО N асков (протухших M)` — часть падения даёт время, а не автономность (находка Codex T3, 28.07).
- Дельта между **разными окнами** (7 дн. против 30 дн.) помечается как несопоставимая, а не выдаётся за прогресс.
- Аски с битой/пустой датой не выбрасываются молча — идут в корзину недели `без даты`.
- «Снимок сохранён» пишется только если запись реально прошла.
## Если сломается
| Симптом | Что это | Лечение |
|---|---|---|
| `НЕТ БАЗЫ: …approvals.db` | на этой машине журнала одобрений нет (не хаб) | замер делать на узле, где живёт `approval.py` |
| `нет таблицы pending` | схема журнала изменилась | сверить `PRAGMA table_info(pending)` и поправить список колонок в `load_rows` |
| `⚠️ снимки нечитаемы` | побился json снимков | скрипт сам отложит его в `*.corrupt-<дата>` и начнёт новый; старый можно вскрыть руками |
| дельта всегда `—` | нет прошлого снимка с тем же окном | сделать замер с тем же `--days` ещё раз (снимки пишутся при каждом прогоне без `--no-snapshot`) |
| аск попал не в тот класс | регулярка шире/уже нужного | править `RULES` в `ask_debt.py` — порядок сверху вниз, первое совпадение выигрывает |
**Регресс-сетка:** `python ~/.claude/scripts/_test_ask_debt.py` (33 проверки: счёт, классы, флаги, пустая/битая БД, мусорные типы, XSS в дашборде, снимки, честность окна, read-only инвариант по md5). `exit 0` = скилл исправен. Прогонять после любой правки `ask_debt.py`.
## Границы
- **READ-ONLY по approvals.db** — база открыта `mode=ro`, ни одного write; статусы асков скилл не трогает (это `approval.py`). Доказано: md5 базы до и после прогона совпадает, попытка write через тот же коннект отбивается.
- Не шлёт ничего в 02 и никуда наружу.
- Классификатор — регулярки по тексту, не LLM: аск с двумя блокерами попадёт в один класс (первый по приоритету). Цифры — оценка формы журнала, не приговор конкретному аску.
- Замер по ЭТОЙ машине: у каждого узла свой `approvals.db`.
- Два одновременных прогона не бьют файл снимков (tmp уникален по pid), но при совпадении момента один снимок может потеряться — на дельту это не влияет (снимки — история, не источник цифр).
<!--kit-footer-->
---
**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.
Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).
Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)
**Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.