# Streamlit

> Crea dashboards interactivos con Streamlit: carga de datos, filtros, gráficos y despliegue.

- Skill: `leandrobenjaminl/streamlit` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add leandrobenjaminl/streamlit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/leandrobenjaminl/streamlit/raw
- Safety review: PASS (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics, Coding & Dev Tools, Data Visualization
- Tags: Dashboard, Data Visualization, Plotly, Python, Streamlit
- License: MIT
- Author: LeandroBenjaminL (https://skillmd.com/u/leandrobenjaminl)
- Updated: 2026-08-22
- Page: https://skillmd.com/skills/leandrobenjaminl/streamlit

---


# Skill: streamlit

Dashboards interactivos en minutos. De un script de análisis a una app que podés mostrar.

## Trigger

- Querés que otros puedan interactuar con tus datos
- Necesitás una UI rápida para un prototipo
- Un dashboard en Streamlit reemplazaría 10 correos con Excel adjuntos
- Querés mostrar resultados a alguien no técnico

## Workflow LEND

```
1. ANALIZAR
   ├── ¿Qué necesita ver el usuario? tablas, gráficos, filtros
   ├── ¿Quién lo usa? técnico (más controles) o ejecutivo (más simple)
   ├── ¿Datos estáticos o en vivo?
   └── ¿Hay que autenticar o es público?

2. OFRECER (Menú del Senior)
   ├── A) MVP — 1 archivo .py, carga de CSV, gráficos básicos, filtra
   ├── B) Modular — múltiples páginas, caché, inputs complejos
   └── C) Producción — auth, deploy en Cloud Run/Streamlit Cloud, logging

3. ELEGIR → confirmación

4. HACER
   ├── Layout: st.sidebar para controles, st.columns para gráficos
   ├── Cache: @st.cache_data para no recargar datos en cada interacción
   ├── Gráficos: Plotly (interactivo) o Altair (declarativo)
   ├── Carga de datos: st.file_uploader para CSV, st.dataframe para tablas editables
   ├── Sesión: st.session_state para estado entre re-runs
   └── Deploy: requirements.txt + runtime.txt + Dockerfile o Streamlit Cloud

5. VERIFICAR
   ├── La app carga sin errores
   ├── Los filtros actualizan los gráficos correctamente
   └── La caché funciona (segundo load es más rápido)
```

## Patrones

- **st.cache_data**: siempre cachear lectura de datos. Sin caché, cada interacción recarga todo.
- **st.session_state**: para estado persistente entre re-runs (lo que el usuario seleccionó).
- **st.columns > st.beta_columns**: API estable desde 1.18.
- **Plotly > Matplotlib**: zoom, hover, tooltips nativos en Streamlit.
- **Requerimientos explícitos**: requirements.txt con versiones fijas para deploy.

## Anti-patrones

- ❌ No cachear datos — cada click recarga el CSV entero
- ❌ Gráficos sin interactividad — Matplotlib estático mata el propósito de Streamlit
- ❌ Sin manejo de errores — un archivo mal formateado rompe toda la app
- ❌ Layout desordenado — todo en una columna sin estructura
- ❌ Hardcodear rutas de archivos — `st.file_uploader` o config, nunca rutas fijas

