Streamlit Apps in Wizard
SkillDatabases & dataCreate or modify Streamlit apps in the Wizard. Use when building new wizard apps, adding Streamlit pages, or working with apps/wizard/ code.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Streamlit Apps in Wizard skill
What this skill tells your AI
The instructions your AI receives, as published by owid/etl in .claude/skills/streamlit-app/SKILL.md and read by ahel’s review.
Apps live in apps/wizard/app_pages/. Run with make wizard or .venv/bin/etlwiz <alias>.
Creating a New App
- Create
apps/wizard/app_pages/your_app/app.py:
import streamlit as st
st.set_page_config(page_title="Wizard: Your App", page_icon="🪄", layout="wide")
def main():
st.title("Your App")
main()
- Register in
apps/wizard/config/config.ymlunder a section'sappslist:
- title: "Your App"
alias: your-app
entrypoint: app_pages/your_app/app.py
description: "What it does"
maintainer: "@slack-handle"
icon: ":material/icon:"
Key Utilities
# Caching (supports ttl, show_time, works outside Streamlit too)
from apps.wizard.utils.components import st_cache_data
@st_cache_data(custom_text="Loading...", ttl="1h")
# URL-synced widgets (shareable state)
from apps.wizard.utils.components import url_persist
url_persist(st.selectbox)(label="Option", options=["a", "b"], key="my_key")
# ⚠️ Booleans stored as "True"/"False" strings in URL
# Charts
from apps.wizard.utils.components import grapher_chart, grapher_chart_from_url
grapher_chart(catalog_path="grapher/ns/ver/ds#var")
grapher_chart(variable_id=123, selected_entities=["France"], tab="map")
# Data loading
from apps.wizard.utils.cached import load_variables_in_dataset, load_variable_data
# Environment & DB
from etl.config import OWID_ENV # .base_site, .indicators_url, .data_api_url
from etl.db import get_engine
from sqlalchemy.orm import Session
Components (apps.wizard.utils.components)
st_horizontal()— flexbox row context managerPagination(items, items_per_page, pagination_key)— paginated listsgrapher_chart()/grapher_chart_from_url()— OWID chartsst_wizard_page_link(alias)— link to another Wizard pagest_tag(name, color, icon)/tag_in_md()— colored badgesst_toast_success()/st_toast_error()— toast notificationspreview_file(path)— code preview in expander
Rules
st.set_page_config()must be the first Streamlit command- Use
@st_cache_datafor expensive operations - Use
url_persist()for shareable widget state - Material icons:
:material/icon_name:(Google Material Symbols) - HTTP requests: always
timeout=30and.raise_for_status()
Signals
- GitHub stars
- 156
- Forks
- 30
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
streamlit-app- Source
- github.com/owid/etl