500 error eliminator
Систематическая диагностика и устранение Django 500 Internal Server Error через анализ кода, конфигурации, шаблонов и логов. Используй когда пользователь сообщает о 500 ошибке, «Internal Server Error», падении сервера, «сайт упал», «500 на проде», или просит отладить ошибку в Django-приложении (dev или production). Это узкоспециализированный реактивный плейбук именно для Django 500; произвольные не-Django баги и регрессии производительности — вне его scope. Если причина инфраструктурная (nginx/gunicorn/systemd, 502/504) — см. vps-deploy-auditor.From its SKILL.md
npx -y skills add goldenprofile/llm-skills --skill 500-error-eliminatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 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.
- runs commandsInstructs the agent to run 2 commands, including `git diff` and 1 more.
SKILL.md
10.4 KB, ~2.4k tokens by cl100k_base, as published. Nobody here has run it
500 Internal Server Error Eliminator
Систематическая диагностика и устранение 500 ошибок в Django приложениях.
Это узкоспециализированный реактивный плейбук именно для Django 500. Произвольные не-Django баги и регрессии производительности — вне scope; разбирай их обычным дисциплинированным циклом reproduce → minimise → hypothesise → fix → regression-test.
Quick Start: Diagnostic Workflow
При получении сообщения о 500 ошибке следуй этому порядку:
Task Progress:
- [ ] 1. Проверить логи ошибок
- [ ] 2. Определить точку возникновения (view/template/middleware)
- [ ] 3. Проверить недавние изменения (git diff)
- [ ] 4. Изолировать проблему
- [ ] 5. Применить исправление
- [ ] 6. Добавить превентивные меры
Step 1: Проверка логов
Сначала найди, куда проект пишет логи. Типичные расположения (уточни структуру конкретного проекта — пути ниже это примеры, а не жёсткие константы):
logs/errors.log,logs/django.log,logs/app.log- путь из
LOGGINGв settings (Grep поLOGGING,FileHandler,filename) - системный журнал на production (journalctl, gunicorn/uwsgi error log, nginx error log)
Найди реальный лог-файл через Glob (**/logs/*.log, **/*.log) и прочитай его (Read).
Ищи в логах:
1. Traceback — полный stack trace ошибки
2. Timestamp — когда произошла ошибка
3. Request path — какой URL вызвал ошибку
4. Exception type — тип исключения (ImportError, AttributeError, etc.)
Критические индикаторы в логах
| Паттерн в логе | Вероятная причина |
|---|---|
ImportError: cannot import name | Неправильный импорт, циклическая зависимость |
AttributeError: 'NoneType' | Обращение к атрибуту None объекта |
TemplateSyntaxError | Ошибка синтаксиса в шаблоне |
DoesNotExist | Запрос несуществующего объекта БД без обработки |
KeyError | Обращение к несуществующему ключу словаря |
Middleware в traceback | Проблема в middleware цепочке |
Step 2: Определение точки возникновения
Анализ Traceback
Читай traceback снизу вверх:
- Последняя строка — само исключение и его сообщение
- Предпоследняя рамка — где именно произошла ошибка (файл + строка)
- Выше по стеку — цепочка вызовов, которая привела к ошибке
Категоризация по источнику
View-level errors:
# Признаки: traceback указывает на views.py
# Частые причины:
# - Некорректная логика обработки данных
# - Отсутствие проверки на None
# - Неправильная работа с QuerySet
Template-level errors:
# Признаки: TemplateSyntaxError или traceback в .html файле
# Частые причины:
# - Обращение к несуществующему атрибуту объекта
# - Неправильный синтаксис тегов {% %}
# - Использование фильтра с неправильным типом данных
Configuration-level errors:
# Признаки: ошибка при запуске или в middleware
# Частые причины:
# - Опечатки в INSTALLED_APPS или MIDDLEWARE
# - Неправильные пути в TEMPLATES
# - Отсутствующие переменные окружения
Step 3: Проверка недавних изменений
Фокусируйся на:
- Новые импорты (могут быть циклические или несуществующие)
- Изменения в views (новая логика, которая может упасть)
- Изменения в моделях (могут сломать существующие QuerySet)
- Изменения в шаблонах (новые теги/фильтры)
- Изменения в settings (могут сломать конфигурацию)
Команда: git diff / git log --oneline -10 и просмотр последних правок затронутых файлов.
Step 4: Изоляция проблемы
Техника сужения области
-
Определи scope:
- Ошибка на всех страницах? → Проблема в middleware/settings
- Ошибка на одной странице? → Проблема в конкретном view/template
- Ошибка после определенного действия? → Проблема в обработке данных
-
Читай код целиком:
- Читай весь view function/class целиком
- Проверяй все пути выполнения (if/else branches)
- Ищи места, где может быть None без проверки
-
Проверь связанные файлы:
- Если ошибка в view — читай используемый template
- Если ошибка в template — читай view, который передает context
- Если ошибка в model method — читай где этот метод вызывается
Common Error Patterns и Workflow по типам
Каталог 5 типовых паттернов 500 (None, ImportError, TemplateSyntaxError, middleware, KeyError) с примерами «было/стало» и пошаговые процедуры под View / Template / Configuration ошибки вынесены в references/error-patterns.md. Открой нужный паттерн по типу исключения из traceback.
Prevention Checklist
После исправления ошибки, добавь превентивные меры:
Для View ошибок:
- Добавлены проверки на None для всех QuerySet операций
- Добавлен try/except для опасных операций
- Добавлена валидация входных данных
- Рассмотрена возможность unit теста для edge case
Для Template ошибок:
- Добавлены {% if %} проверки перед обращением к атрибутам
- Все необходимые {% load %} теги на месте
- Проверены все вложенные блоки на закрытие
Для Configuration ошибок:
- Проверены все пути на существование
- Проверены импорты на корректность
- Добавлены комментарии для неочевидных настроек
Контекст окружения: где запускать, а где нет
Часто диагностика идёт на локальной машине (нередко Windows), а ошибка воспроизводится на production (Linux-сервер). В таком случае:
НЕ пытайся локально запускать (если нет настроенной БД/окружения):
python manage.py check(требует БД)python manage.py runserver- Любые Django management команды, требующие подключения к БД/сервисам
Можно делать всегда:
- Читать файлы напрямую (Read)
- Проверять Python синтаксис статически
- Анализировать код (Grep/Glob)
- Читать логи (найденный лог-файл проекта)
Если же окружение настроено и БД доступна — запуск management-команд и воспроизведение ошибки локально приветствуется (дисциплинированный шаг reproduce).
Quick Reference Card
При 500 ошибке задай себе эти вопросы:
- Что показывает traceback? → Найди и прочитай лог-файл проекта
- Где произошло? → View / Template / Config
- Что изменилось? → Читай git diff
- Есть ли None? → Проверь все QuerySet и dict операции
- Есть ли импорты? → Проверь циклические зависимости
- Правильный ли template синтаксис? → Проверь теги и фильтры
- Что в context? → Проверь view передает нужные данные
What ships with it: 1 file
4.4 KB alongside SKILL.md
references/
- error-patterns.md4.4 KB