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 | $0.00026 | $0.00522 |
| Sonnet 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 12d 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.
- 12d 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 (505 stars, last pushed 3mo ago), licensed MIT. It adds 51 tokens to every session and 1,044 once invoked, about $0.0003 per session on Opus 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
figma-implement-design
Translate Figma nodes into production-ready code with 1:1 visual fidelity using the Figma MCP workflow (design context, screenshots, assets, and project-convention translation). Trigger when the user provides Figma URLs or node IDs, or asks to implement designs or components that must match Figma specs. Requires a…
netlify-deploy
Deploy web projects to Netlify using the Netlify CLI (npx netlify). Use when the user asks to deploy, host, publish, or link a site/repo on Netlify, including preview and production deploys.
top-design
Create award-winning, immersive web experiences at the level of Awwwards-featured agencies. Use when the user mentions "Awwwards quality", "make my site stunning", "scroll animations", "parallax storytelling", "cinematic web design", "portfolio site", or "brand experience". Also trigger when elevating a standard…
web-typography
Select, pair, and implement typefaces for web projects. Use when the user mentions "font pairing", "which typeface", "line height", "responsive typography", "web font loading", "type hierarchy", "variable fonts", "FOUT/FOIT", "typographic scale", or "the text is hard to read". Also trigger when choosing between system…
refactoring-ui
Audit and fix visual hierarchy, spacing, color, and depth in web UIs. Use when the user mentions "my UI looks off" (or amateur/unprofessional), "fix the design", "Tailwind styling", "color palette", "visual hierarchy", "design system", "spacing scale", or "component styling". Also trigger when building consistent…
html-artifact
Generate rich self-contained HTML artifacts instead of markdown. Auto-detects artifact shape (spec, code-review, prototype, report, editor, data-viz, diagram, deck) and loads shape-specific patterns. Bundles Birchline design system with 4 theme presets. Use for "make HTML", "as HTML", "HTML artifact", or auto-injected…