Borrowing it
Nothing to install: this file belongs to iusztinpaul/designing-real-world-ai-agents-workshop. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/iusztinpaul/designing-real-world-ai-agents-workshop/main/.agents/skills/developing-with-streamlit/skills/choosing-streamlit-selection-widgets/SKILL.mdgit clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshopWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/iusztinpaul/designing-real-world-ai-agents-workshop/choosing-streamlit-selection-widgets)<a href="https://agentmods.dev/skills/iusztinpaul/designing-real-world-ai-agents-workshop/choosing-streamlit-selection-widgets"><img src="https://agentmods.dev/badge/skills/iusztinpaul/designing-real-world-ai-agents-workshop/choosing-streamlit-selection-widgets/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/iusztinpaul/designing-real-world-ai-agents-workshop/choosing-streamlit-selection-widgets"><img src="https://agentmods.dev/badge/skills/iusztinpaul/designing-real-world-ai-agents-workshop/choosing-streamlit-selection-widgets.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00051 | $0.01044 |
| Opus 5.5 | $0.00020 | $0.00418 |
| Sonnet 5.5 | $0.00010 | $0.00209 |
| Haiku 4.5 | $0.00005 | $0.00104 |
Grade A, and why
choosing-streamlit-selection-widgets scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Streamlit selection widgets
The right selection widget for the job. Streamlit has evolved—many old patterns are now anti-patterns.
When to use what
Use st.segmented_control or st.pills when you want all options visible at once. Use st.selectbox or st.multiselect when options should be hidden in a dropdown.
| Widget | Best For |
|---|---|
st.segmented_control |
2-5 options, single select, all visible |
st.pills |
2-5 options, multi-select, all visible |
st.selectbox |
Many options, single select, dropdown |
st.multiselect |
Many options, multi-select, dropdown |
Segmented control (options visible, single select)
# BAD
status = st.radio("Status", ["Draft", "Published"], horizontal=True)
# GOOD
status = st.segmented_control("Status", ["Draft", "Published"])
For vertical layouts, st.radio(..., horizontal=False) is still a great choice.
Cleaner, more modern look than horizontal radio buttons.
Pills (options visible, multi-select)
# Multi-select with few options
selected = st.pills(
"Tags",
["Python", "SQL", "dbt", "Streamlit"],
selection_mode="multi"
)
Can also be used to mimic an "example" widget, especially with label_visibility="collapsed":
st.pills("Examples", ["Show me sales data", "Top customers"], label_visibility="collapsed")
More visual and easier to use than st.multiselect for small option sets.
Selectbox (many options, single select)
country = st.selectbox(
"Select a country",
["USA", "UK", "Canada", "Germany", "France", ...]
)
Dropdowns scale better than radio/pills for long lists.
Multiselect (many options, multi-select)
countries = st.multiselect(
"Select countries",
["USA", "UK", "Canada", "Germany", "France", ...]
)
Toggle vs checkbox
Use st.toggle for settings that trigger changes in the app. Reserve st.checkbox for forms.
# GOOD: Toggle for app settings
dark_mode = st.toggle("Dark mode")
show_advanced = st.toggle("Show advanced options")
# GOOD: Checkbox in forms
with st.form("signup"):
agree = st.checkbox("I agree to the terms")
st.form_submit_button("Sign up")
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2mo ago First seen · 140 lines · 51 tokens per session scan A ced96c4e3831
choosing-streamlit-selection-widgets is a skill published in the GitHub repository iusztinpaul/designing-real-world-ai-agents-workshop (517 stars, last pushed 4mo ago), licensed MIT. It adds 51 tokens to every session and 1,044 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
report-helper
A Chinese-language research workflow that searches the internet and produces a formatted PDF report about a specified topic.
happiness-skill
A Chinese-language guide to happiness based on reducing unmet wants, focusing on the present, and treating happiness as a trainable skill.
deck-course-module
A course or workshop slide template with persistent learning goals, teaching pages, multiple-choice self-tests, and a wrap-up.
asc-subscription-localization
Bulk-localize subscription, subscription-group, and in-app purchase display names across App Store locales using asc, including API 4.4.1 version-scoped v2 resources. Use when filling or updating subscription/IAP names and descriptions without App Store Connect UI work.
remotion-best-practices
Best practices and domain knowledge for building videos programmatically with Remotion (videos in React/TypeScript, rendered to MP4). Use whenever writing or editing Remotion code — scaffolding a video project, animating with interpolate/spring over useCurrentFrame(), sequencing scenes and transitions…
codex
Run benchmark-selected GPT-5.6 work through the Codex CLI.