$npx -y skills add AlekseiUL/sprut-agent-kit --skill systematic-debuggingСистематическая отладка при любых багах, ошибках, неожиданном поведении. Используй ПЕРЕД предложением фиксов. Триггеры: 'не работает', 'баг', 'ошибка', 'сломалось', 'debug', 'почему не', 'странное поведение', 'крон не запустился', 'скрипт падает'.
| 1 | # Систематическая отладка |
| 2 | |
| 3 | ## Железное правило |
| 4 | |
| 5 | ``` |
| 6 | НИКАКИХ ФИКСОВ БЕЗ ПОНИМАНИЯ ПРИЧИНЫ |
| 7 | ``` |
| 8 | |
| 9 | Рандомные фиксы тратят время и создают новые баги. Если не прошёл Фазу 1 - нельзя предлагать решения. |
| 10 | |
| 11 | ## Когда использовать |
| 12 | |
| 13 | Любая техническая проблема: |
| 14 | - Крон не запустился / выдал ошибку |
| 15 | - Скрипт падает |
| 16 | - Gateway не отвечает |
| 17 | - Docker контейнер упал |
| 18 | - Память не ищет нужное |
| 19 | - Бот не отправляет сообщения |
| 20 | - Любое "раньше работало, теперь нет" |
| 21 | |
| 22 | **Особенно** когда: под давлением, "очевидный фикс" напрашивается, уже пробовал 2+ решения. |
| 23 | |
| 24 | ## Четыре фазы |
| 25 | |
| 26 | ### Фаза 1: Расследование причины |
| 27 | |
| 28 | **ПЕРЕД любым фиксом:** |
| 29 | |
| 30 | 1. **Прочитай ошибку целиком** |
| 31 | - Не пропускай стектрейсы и warnings |
| 32 | - Часто ответ прямо в тексте ошибки |
| 33 | - Запиши: файл, строка, код ошибки |
| 34 | |
| 35 | 2. **Воспроизведи** |
| 36 | - Можешь повторить проблему? |
| 37 | - Какие точные шаги? |
| 38 | - Если не воспроизводится - собирай больше данных, не гадай |
| 39 | |
| 40 | 3. **Что изменилось?** |
| 41 | - `git diff`, последние коммиты |
| 42 | - Обновление платформы? (проверь версию) |
| 43 | - Новые зависимости, конфиг? |
| 44 | - `memory/progress-log.md` - что делалось недавно |
| 45 | |
| 46 | 4. **Проследи поток данных** |
| 47 | Для многокомпонентных систем (крон → gateway → агент → tool → результат): |
| 48 | ``` |
| 49 | На каждом стыке: |
| 50 | - Что входит? |
| 51 | - Что выходит? |
| 52 | - Где ломается? |
| 53 | ``` |
| 54 | |
| 55 | ### Фаза 2: Анализ паттерна |
| 56 | |
| 57 | 1. **Найди рабочий пример** - похожий скрипт/крон который работает |
| 58 | 2. **Сравни** - что отличается между рабочим и сломанным? |
| 59 | 3. **Проверь зависимости** - всё ли на месте (docker, npm, пути, права)? |
| 60 | |
| 61 | ### Фаза 3: Гипотеза и тест |
| 62 | |
| 63 | 1. **Сформулируй гипотезу** - "Я думаю причина в X потому что Y" |
| 64 | 2. **Минимальный тест** - ОДНО изменение, ОДНА переменная |
| 65 | 3. **Проверь** - сработало → Фаза 4. Нет → новая гипотеза |
| 66 | 4. **НЕ лепи фиксы поверх** - если не сработало, откати и думай заново |
| 67 | |
| 68 | ### Фаза 4: Реализация фикса |
| 69 | |
| 70 | 1. **Фикси причину, не симптом** |
| 71 | 2. **Одно изменение за раз** |
| 72 | 3. **Проверь** - проблема ушла? Ничего другого не сломалось? |
| 73 | 4. **Запиши** - `bash scripts/progress-log.sh` + daily notes если важное |
| 74 | 5. **Если 3+ фикса не сработали** - СТОП. Проблема архитектурная. Обсуди с Алексеем. |
| 75 | |
| 76 | ## Красные флаги - ОСТАНОВИСЬ |
| 77 | |
| 78 | Если ловишь себя на мысли: |
| 79 | - "Быстрый фикс, потом разберусь" |
| 80 | - "Попробую поменять X, вдруг поможет" |
| 81 | - "Добавлю несколько изменений сразу" |
| 82 | - "Не совсем понимаю, но может сработает" |
| 83 | - "Ещё один фикс..." (когда уже 2+ не сработали) |
| 84 | |
| 85 | → СТОП. Вернись к Фазе 1. |
| 86 | |
| 87 | ## Наши типичные проблемы и где искать |
| 88 | |
| 89 | | Проблема | Первым делом проверь | |
| 90 | |----------|---------------------| |
| 91 | | Крон не запустился | Проверь cron list → consecutiveErrors, lastStatus | |
| 92 | | Gateway не отвечает | Проверь gateway status, порт | |
| 93 | | Скрипт не найден | Путь, chmod +x, shebang | |
| 94 | | Docker упал | `docker ps -a`, `docker logs <name>` | |
| 95 | | Память не ищет | `sqlite3 <path>/memory.sqlite "SELECT count(*) FROM chunks;"` | |
| 96 | | Бот молчит | message tool → проверь to, channel | |
| 97 | | После обновления | Проверь health-check, перезапусти сервисы | |