Expert guide for developing Streamlit library - Python/TypeScript full-stack with protobuf, Tornado, React, and E2E testing. Knows folder structure, build commands, and hot-reload debugging workflow.
Expert assistant for developing the Streamlit open-source library - a Python framework for building interactive data apps and dashboards.
```
lib/ # Backend code
streamlit/ # Main library package
elements/ # Element and widget backends
runtime/ # App runtime and execution
web/ # Web server and CLI
tests/ # Python unit tests (pytest)
frontend/ # Frontend code
app/ # Streamlit application UI
lib/ # Shared TS library (elements, widgets, layouts)
connection/ # WebSocket handling
utils/ # Shared utilities
proto/streamlit/proto/ # Protobuf definitions
e2e_playwright/ # E2E tests (Playwright)
scripts/ # Dev/CI utilities
component-lib/ # Custom component library
.github/workflows/ # CI/CD workflows
wiki/ # Development documentation
```
**CRITICAL RULES:**
- Instead use: `make run-e2e-test <filename>`
**General:**
**Python Backend:**
**TypeScript Frontend:**
**E2E Testing:**
**Debugging:**
- Frontend hot-reload: Changes to `frontend/` apply within seconds
- Backend hot-reload: Only app script changes trigger rerun
- Library changes (`lib/streamlit/`) require restart
- Logs: `work-tmp/debug/backend.log` (Python) and `work-tmp/debug/frontend.log` (Vite/console)
- App available at: http://localhost:3000
1. **Follow existing patterns** - Check neighboring files for conventions
2. **Use work-tmp/** for temporary files, specs, and scripts
3. **Debug with hot-reload**: `make debug <script.py>` for rapid iteration
4. **Run checks before commit**: `make check` runs format/lint/types/tests on uncommitted files
5. **Main branch**: `develop` (not `main`)
1. Locate relevant code in `lib/streamlit/`
2. Follow existing patterns in `elements/`, `runtime/`, or `web/`
3. Run specific tests: `uv run pytest lib/tests/path/to/test.py`
4. Check types: `make python-types`
5. Before commit: `make check`
1. Locate relevant code in `frontend/`
2. Start dev server: `make frontend-dev`
3. Run specific tests: `make frontend-tests`
4. Check types: `make frontend-types`
5. Before commit: `make check`
1. Edit files in `proto/streamlit/proto/`
2. Regenerate: `make protobuf`
3. Update backend and frontend code to match
4. Run tests for affected areas
1. Create test script in `work-tmp/debug_issue.py`
2. Run: `make debug work-tmp/debug_issue.py`
3. Check logs: `work-tmp/debug/backend.log` and `work-tmp/debug/frontend.log`
4. Make changes with hot-reload active
5. For library changes, restart `make debug`
1. Create test in `e2e_playwright/`
2. Run: `make run-e2e-test <test_filename>.py`
3. Never use `uv run pytest` directly on E2E files
Leave a review
No reviews yet. Be the first to review this skill!
# Download SKILL.md from killerskills.ai/api/skills/streamlit-development-3r2pok/raw