# bottle

Правило для Cursor задаёт структуру Bottle-проекта: модули вместо одного app.py, конфиг через app.config, валидация Pydantic. Пригодится, если пишете бэкенд на Bottle.

- правило · `type=rule` · Cursor · ★ 3579
- Автор: sanjeed5
- Лицензия: CC0-1.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/bottle.mdc
- Обновлён: 2026-05-19
- HTML: https://affpapa.org/nevibecode/rules/bottle

## Что делает

Правило подключается к Cursor и действует на все файлы `**/*.py`. Оно требует раскладывать проект по пакетам: точки входа в `app.py`, маршруты в `routes/`, бизнес-логику в `services/`, схемы Pydantic в `schemas/`, настройки в `config/`. Монолитный `app.py`, где свалены маршруты, запросы к базе и конфиг, правило прямо называет плохим вариантом.

Конфигурацию оно советует держать в `app.config`: значения по умолчанию из `.ini`, поверх них переменные окружения, после загрузки конфиг не меняется. Общие ресурсы вроде подключения к базе — через плагины Bottle, а не через глобальные переменные. Для API: REST-маршруты, схемы на Pydantic, ответы в JSON, ошибки валидации отдаются со статусом 400 и разбором полей.

Внутри правила есть примеры кода с пометками «хорошо» и «плохо» — по ним видно, как автор видит типовой проект. Если в вашем приложении уже есть глобальное подключение к базе или конфиг, зашитый в код, правило будет тянуть переписывать эти места, так что это повод сначала решить, готовы ли вы к такой перестройке.

## Установка

### Cursor (родная платформа)

**Вручную: положить файлы**
- Файл: `.cursor/rules/bottle.mdc` — Во frontmatter: description, globs, alwaysApply

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/bottle.md` — Поле paths во frontmatter ограничивает файлы: globs из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/instructions/bottle.instructions.md` — Поле applyTo задаёт, к каким файлам применять: globs из источника → applyTo

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/bottle.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/bottle.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/bottle.mdc

## Когда брать
- разложить растущий Bottle-проект по модулям вместо одного `app.py`
- вынести настройки в `app.config` с переопределением из переменных окружения
- проверять входные данные запросов схемами Pydantic
- отдавать ошибки валидации структурно, а не строкой
- заменить глобальное подключение к базе на плагин Bottle

## Примеры запросов агенту
- Разбей текущий `app.py` на `routes/`, `services/` и `schemas/` по правилу bottle
- Перенеси настройки базы в `app.config` и добавь переопределение через `DATABASE_URL`
- Добавь валидацию Pydantic в обработчик создания пользователя

## Похожие
- [fastapi-python](https://affpapa.org/nevibecode/skills/fastapi-python.md) — скилл · 13900 установок
- [fhir-developer-skill](https://affpapa.org/nevibecode/skills/fhir-developer-skill.md) — скилл · 663 установки
- [pydantic](https://affpapa.org/nevibecode/skills/pydantic.md) — скилл · 2200 установок
- [fastapi-development](https://affpapa.org/nevibecode/skills/fastapi-development.md) — скилл · 618 установок
- [python-pro](https://affpapa.org/nevibecode/skills/python-pro.md) — скилл · 399 установок
- [python](https://affpapa.org/nevibecode/skills/siviter-xyz-python.md) — скилл · 349 установок

Из того же набора: [sanjeed5/awesome-cursor-rules-mdc](https://affpapa.org/nevibecode/by/sanjeed5/awesome-cursor-rules-mdc.md) — 69 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
