| name | git-discipline |
| description | Git-дисциплина проекта: ветки feature/<NN>-<name>, Conventional Commits на русском, ритуал задачи, зелёные pytest+flake8 до коммита, секреты не коммитим. |
Skill: git-discipline
Правила работы с git. Источник истины — _docs/instructions.md §2 и _board/process.md §7.
Когда использовать
- Начинаешь/закрываешь задачу спринта.
- Готовишь любой коммит.
- Настраиваешь ветку под спринт.
Алгоритм
- Ветки. Основная —
main, рабочие — feature/<NN>-<short-name> (по одной на спринт, от main).
- Коммиты — атомарные, в императиве, по Conventional Commits. Текст — на русском, идентификаторы — латиницей.
feat(handlers): добавить команду /new
fix(memory): обработать недоступность sqlite-vec при старте
test(tools): покрыть calculator случаем деления на ноль
docs(architecture): уточнить поток /new в §5
- Ритуал задачи (трёхэтапный):
- Начать: статус →
Progress + сводная таблица + plan.md счётчики → коммит chore(plan): начать задачу <stage>.<task> (спринт + plan.md одним коммитом).
- Код/доки: атомарные коммиты содержимого (
feat/fix/docs/test/...).
- Закрыть (один
multi_edit файла спринта + plan.md):
- статус →
Done (заголовок задачи)
- DoD → все чекбоксы
[x]
- сводная таблица →
Done
- история изменений → новая строка внизу (хронологический порядок)
plan.md → счётчики ToDo / Progress / Done
→ коммит chore(plan): закрыть задачу <stage>.<task> (спринт + plan.md одним коммитом).
- Проверка:
python3 scripts/check_sprint_sync.py.
- Перед каждым кодовым коммитом — оба зелёные:
pytest -q (кроме chore(plan): ...-коммитов);
flake8 app tests (нарушения в изменённых файлах — починить).
Если что-то красное (даже не относящееся к задаче) — сначала чинится.
Весь ритуал одной командой (flake8, pytest и все скрипты-гейты): bash .agents/skills/git-discipline/scripts/preflight.sh.
.gitignore обязан содержать: .env, .venv/, __pycache__/, *.pyc, logs/, data/, *.db, .pytest_cache/, .idea/, .vscode/.
Чего избегать
- Коммита
.env, реального токена, логов, data/*.db.
- Push / merge в
main / удаления ветки спринта — это делает только пользователь по явному запросу, агент никогда автоматически.
- Неатомарных коммитов (несколько несвязанных правок в одном).
- Коммита при красном
pytest/flake8.
Что делать при утечке секрета
Если токен или БД с приватными данными случайно попали в историю — ротировать токен в @BotFather, удалить из истории (git filter-repo), удалить .db-файл.