--- name: developing-with-streamlit description: Build production-grade Streamlit apps. Used when creating, editing, debugging, or deploying Streamlit applications. Routes to specialized sub-skills for performance, layouts, design, data display, and more. --- # 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](skills/building-streamlit-chat-ui/SKILL.md) | Chat interfaces, streaming responses, message history | | [building-streamlit-dashboards](skills/building-streamlit-dashboards/SKILL.md) | KPI cards, metrics, dashboard layouts | | [building-streamlit-multipage-apps](skills/building-streamlit-multipage-apps/SKILL.md) | Page structure, navigation, shared state | | [choosing-streamlit-selection-widgets](skills/choosing-streamlit-selection-widgets/SKILL.md) | Selectbox vs radio vs segmented control vs pills vs multiselect | | [connecting-streamlit-to-snowflake](skills/connecting-streamlit-to-snowflake/SKILL.md) | st.connection, query caching, credentials | | [customizing-streamlit-theme](skills/customizing-streamlit-theme/SKILL.md) | Custom colors via config.toml, light/dark modes | | [displaying-streamlit-data](skills/displaying-streamlit-data/SKILL.md) | Dataframes, column config, charts | | [improving-streamlit-design](skills/improving-streamlit-design/SKILL.md) | Icons, badges, colored text, visual polish | | [optimizing-streamlit-performance](skills/optimizing-streamlit-performance/SKILL.md) | Caching, fragments, forms, static vs dynamic widgets | | [organizing-streamlit-code](skills/organizing-streamlit-code/SKILL.md) | When to split into modules, separating UI from logic | | [setting-up-streamlit-environment](skills/setting-up-streamlit-environment/SKILL.md) | Python environment, dependency management | | [using-streamlit-custom-components](skills/using-streamlit-custom-components/SKILL.md) | Third-party components from the community | | [using-streamlit-cli](skills/using-streamlit-cli/SKILL.md) | CLI commands, running apps | | [using-streamlit-layouts](skills/using-streamlit-layouts/SKILL.md) | Sidebar, columns, containers, tabs, expanders, dialogs, alignment, spacing | | [using-streamlit-markdown](skills/using-streamlit-markdown/SKILL.md) | Colored text, badges, icons, LaTeX, and all markdown features | | [using-streamlit-session-state](skills/using-streamlit-session-state/SKILL.md) | Session state, widget keys, callbacks, state persistence | ## Resources - [Streamlit documentation](https://docs.streamlit.io/develop/api-reference)