Developing with Streamlit
A collection of skills for building production-grade Streamlit apps. Each skill focuses on a specific aspect of Streamlit development.
When to activate
Activate these skills when:
Creating new Streamlit apps from scratch Adding features to existing apps Debugging performance issues Improving app design and UX Setting up project structure and environments Connecting to data sources like Snowflake Quick routing
Performance issues or slow apps? → optimizing-streamlit-performance
Building a new UI? → choosing-streamlit-selection-widgets + using-streamlit-layouts
Building a dashboard? → building-streamlit-dashboards + displaying-streamlit-data
Making it look good? → improving-streamlit-design
Formatting text with markdown? → using-streamlit-markdown
Multi-page architecture? → building-streamlit-multipage-apps
Customizing appearance? → customizing-streamlit-theme
Setting up a project? → setting-up-streamlit-environment
App getting complex? → organizing-streamlit-code
Connecting to Snowflake? → connecting-streamlit-to-snowflake
Building a chatbot or AI assistant? → building-streamlit-chat-ui
Need features not in core Streamlit? → using-streamlit-custom-components
Using the Streamlit CLI? → using-streamlit-cli
State management and session state? → using-streamlit-session-state
Skill map Skill Covers building-streamlit-chat-ui Chat interfaces, streaming responses, message history building-streamlit-dashboards KPI cards, metrics, dashboard layouts building-streamlit-multipage-apps Page structure, navigation, shared state choosing-streamlit-selection-widgets Selectbox vs radio vs segmented control vs pills vs multiselect connecting-streamlit-to-snowflake st.connection, query caching, credentials customizing-streamlit-theme Custom colors via config.toml, light/dark modes displaying-streamlit-data Dataframes, column config, charts improving-streamlit-design Icons, badges, colored text, visual polish optimizing-streamlit-performance Caching, fragments, forms, static vs dynamic widgets organizing-streamlit-code When to split into modules, separating UI from logic setting-up-streamlit-environment Python environment, dependency management using-streamlit-custom-components Third-party components from the community using-streamlit-cli CLI commands, running apps using-streamlit-layouts Sidebar, columns, containers, tabs, expanders, dialogs, alignment, spacing using-streamlit-markdown Colored text, badges, icons, LaTeX, and all markdown features using-streamlit-session-state Session state, widget keys, callbacks, state persistence Resources Streamlit documentation