streamlit / implementing-new-features
Install for your project team
Run this command in your project directory to install the skill for your entire team:
mkdir -p .claude/skills/implementing-new-features && curl -L -o skill.zip "https://fastmcp.me/Skills/Download/1441" && unzip -o skill.zip -d .claude/skills/implementing-new-features && rm skill.zip
Project Skills
This skill will be saved in .claude/skills/implementing-new-features/ and checked into git. All team members will have access to it automatically.
Important: Please verify the skill by reviewing its instructions before using it.
Implementation guide for new Streamlit features. Use when adding new elements, widgets, or features that span backend, frontend, and protobufs.
0 views
0 installs
Skill Content
--- name: implementing-new-features description: Implementation guide for new Streamlit features. Use when adding new elements, widgets, or features that span backend, frontend, and protobufs. --- # New Feature Implementation Guide For understanding the underlying architecture (backend runtime, frontend rendering, WebSocket communication, element tree), see the [understanding-streamlit-architecture](../understanding-streamlit-architecture/SKILL.md) skill. Most features need implementation in three areas: - Backend: `lib/streamlit/` - Frontend: `frontend/` - Protobufs: `proto/` New features should include: - Python unit tests in `lib/tests` - Vitest unit tests - E2E Playwright tests in `e2e_playwright/` ## Order of Implementation 1. **Protobuf changes** in `proto/` then run `make protobuf` - New elements: add to `proto/streamlit/proto/Element.proto` 2. **Backend** in `lib/streamlit/` - New elements: add to `lib/streamlit/__init__.py` 3. **Python unit tests** in `lib/tests` - Run: `uv run pytest lib/tests/streamlit/the_test_name.py` - New elements: add to `lib/tests/streamlit/element_mocks.py` 4. **Frontend** in `frontend/` - New elements: add to `frontend/lib/src/components/core/Block/ElementNodeRenderer.tsx` 5. **Vitest tests** in `*.test.tsx` - Run: `cd frontend && yarn vitest lib/src/components/elements/NewElement/NewElement.test.tsx` 6. **E2E Playwright tests** in `e2e_playwright/` - Run: `make run-e2e-test e2e_playwright/name_of_the_test.py` 7. **Autofix** formatting and linting: `make autofix` 8. **Verify** the implementation: `make check`