ワンクリックで
testing-discipline
Дисциплина тестов проекта: pytest + asyncio, моки внешних систем, без сети, тест на новое поведение, целевое покрытие.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Дисциплина тестов проекта: pytest + asyncio, моки внешних систем, без сети, тест на новое поведение, целевое покрытие.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Планирование регулярных задач по расписанию. Триггер — «напоминай мне каждый день», «проверяй почту по будням в 9 утра», «каждый час делай сводку», «запланируй задачу».
Дисциплина отладки: стоп-линия при сбое, воспроизводящий тест до фикса, первопричина вместо симптома, минимальная правка, защита от регрессии.
Git-дисциплина проекта: ветки feature/<NN>-<name>, Conventional Commits на русском, ритуал задачи, зелёные pytest+flake8 до коммита, секреты не коммитим.
Как добавлять и менять скиллы/промпты ассистента в .agents/: формат SKILL.md, каталог scripts/, зеркала (.claude, AGENTS.md, README) и проверка check_agents_sync.py.
Разбор входящей почты (Яндекс, Gmail) из чата: список писем, чтение по uid, классификация и структурированный отчёт. Триггер — «какие письма», «разбери почту», «что нового на почте».
Автоматизация без ИИ: детерминированное и повторяемое — скриптом/CI-гейтом, а не ИИ и не глазами; ИИ остаётся для суждений.
| name | testing-discipline |
| description | Дисциплина тестов проекта: pytest + asyncio, моки внешних систем, без сети, тест на новое поведение, целевое покрытие. |
Правила тестирования этого проекта. Источник истины — _docs/testing.md и _docs/instructions.md §8.
app/ — нужен unit-тест на новое поведение.pytest -q.Не использовать для чисто-документационных задач (правят только _docs/, _board/, README.md, .env.example, app/skills/, app/prompts/) — они освобождены от теста, в DoD ставится n/a.
tests/<пакет>/test_<name>.py.pytest + pytest-asyncio (asyncio_mode = "auto"), фикстуру mocker.Message/Bot → MagicMock/AsyncMock;mocker.patch.object(client, "chat"/"embed", ...);ddgs: mocker.patch("ddgs.DDGS.text", ...);httpx: MockTransport/respx;app/skills/, app/prompts/: путь → tmp_path.SemanticMemory тестируй с реальным sqlite-vec на tmp_path; если extension не грузится — pytest.skip.ToolError, LLMTimeout, LLMUnavailable, LLMBadResponse, ArgsValidationError), границы (пустой результат, усечение до лимита, превышение лимитов цикла).caplog (step=, tool=<name>, status=).pytest -q — зелёный. Цель покрытия: app/ ≥ 70%, services//agents//tools/ ≥ 85%, app/agents/protocol.py — 100%.pytest -k/skip вместо починки.