# streamlit

Правило для Cursor задаёт, как писать приложения на Streamlit: кэшировать тяжёлые операции, держать UI отдельно от логики и разбивать проект на модули.

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

## Что делает

Правило подключается файлом `.cursor/rules/streamlit.mdc` и действует на все файлы `**/*.py`. Внутри — набор требований к структуре проекта и к работе с состоянием. Вместо одного большого `app.py` предлагается раскладка по папкам: `pages/` для страниц, `services/` для загрузки и обработки данных, `components/` для повторно используемых виджетов. Каждая страница получает функцию `main()`, а `app.py` только собирает навигацию.

Отдельный блок про производительность. Streamlit перезапускает скрипт при каждом действии пользователя, поэтому загрузку данных и тяжёлые вычисления правило требует оборачивать в `@st.cache_data`, а соединения с базой и модели — в `@st.cache_resource`. Для пользовательских значений — `st.session_state` с инициализацией через проверку ключа. Есть примеры «плохо» и «хорошо» на каждый случай: некэшированная загрузка CSV, сброс счётчика на каждом перезапуске, вызов `st.write` внутри функции расчёта.

Советую начать с раздела про кэш: если в приложении уже есть медленная загрузка данных, правило сразу покажет, где её обернуть. Учтите, что текст обрезан на примерах про контекстные менеджеры, так что часть материала по вёрстке до вас не дойдёт. Требования к версии Streamlit в правиле не заданы, конфликтов с другими наборами правил не описано.

## Установка

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

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

### Claude Code

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

### Codex

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

### GitHub Copilot

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

### Windsurf (Devin Desktop)

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

### Cline

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

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

## Когда брать
- разложить монолитный `app.py` на страницы, сервисы и компоненты
- обернуть загрузку данных в `@st.cache_data`, чтобы она не шла на каждый клик
- завести `st.session_state` без сброса значений при перезапуске скрипта
- вынести вызовы `st.write` из функций бизнес-логики
- собрать навигацию по страницам через словарь модулей

## Примеры запросов агенту
- Перепиши `app.py` по правилу streamlit: вынеси загрузку данных в `services/data_service.py` и оберни её в `@st.cache_data`.
- Проверь этот файл на антипаттерны из правила streamlit: где UI смешан с логикой и где не хватает кэша.
- Добавь страницу в `pages/` с функцией `main()` и подключи её к навигации в `app.py`.

## Похожие
- [streamlit-to-marimo](https://affpapa.org/nevibecode/skills/streamlit-to-marimo.md) — скилл · 2300 установок
- [debugging-streamlit](https://affpapa.org/nevibecode/skills/debugging-streamlit.md) — скилл · 493 установки
- [harvard-artifacts-collection-etl-analytics](https://affpapa.org/nevibecode/skills/harvard-artifacts-collection-etl-analytics.md) — скилл · 1900 установок
- [harvard-artifacts-etl-pipeline](https://affpapa.org/nevibecode/skills/harvard-artifacts-etl-pipeline.md) — скилл · 1700 установок
- [databricks-apps-python](https://affpapa.org/nevibecode/skills/databricks-apps-python.md) — скилл · 305 установок
- [apollo-client](https://affpapa.org/nevibecode/skills/apollo-client.md) — скилл · 5600 установок

Из того же набора: [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
