Paper Figures
EvoScientist/EvoSkills
A skill your agent uses to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames).
Agent skill
by iusztinpaul in iusztinpaul/designing-real-world-ai-agents-workshop
Structuring Streamlit app layouts. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layouts --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .claude/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .claude/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layoutsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layouts --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .agents/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .agents/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layouts --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .cursor/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .cursor/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git --path .agents/skills/developing-with-streamlit/skills/using-streamlit-layouts--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layouts --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .gemini/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .gemini/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layoutsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .github/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .github/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop using-streamlit-layouts --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts .opencode/skills/using-streamlit-layouts && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "using-streamlit-layouts" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts into .opencode/skills/using-streamlit-layouts/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-streamlit-layouts", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
using-streamlit-layoutsStructuring Streamlit app layouts. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
Using Streamlit Layouts is an agent skill from iusztinpaul/designing-real-world-ai-agents-workshop. Structuring Streamlit app layouts. Use when placing content in sidebars, columns, containers, or dialogs. Covers sidebar usage, column limits, horizontal containers, dialogs, and bordered cards.
Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Streamlit. The repository describes itself as: Hands-on workshop: Build a multi-agent AI system from scratch — Deep Research Agent + Writing Workflow served as MCP servers. Includes code, slides, and video. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit ea4f6e9. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
docs.streamlit.ioFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Using Streamlit Layouts loads about 1.4k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 248 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from iusztinpaul/designing-real-world-ai-agents-workshop at commit ea4f6e9, republished under its Apache-2.0 licence (© iusztinpaul). 248 words, ~1,410 tokens.
.claude/skills/using-streamlit-layouts/SKILL.md (or your agent's skills folder).How you structure your app affects usability more than you think.
The sidebar should only contain navigation and app-level filters. Main content goes in the main area.
# GOOD
with st.sidebar:
date_range = st.date_input("Date range")
region = st.selectbox("Region", ["All", "US", "EU", "APAC"])
st.caption("App v1.2.3")# BAD: Too much content in sidebar
with st.sidebar:
st.title("Dashboard")
st.dataframe(df) # Don't put main content here
st.bar_chart(data)What goes in sidebar:
What stays out:
Don't use too many columns—they get cramped.
# GOOD
col1, col2 = st.columns(2)
# Custom widths (ratios)
col1, col2 = st.columns([2, 1]) # 2:1 ratio
# OK with alignment
cols = st.columns(4, vertical_alignment="center")
# BAD: Too many, cramped
col1, col2, col3, col4, col5, col6 = st.columns(6)Use st.container(horizontal=True) instead of columns for button groups:
with st.container(horizontal=True):
st.button("Cancel")
st.button("Save")
st.button("Submit")Use horizontal_alignment on containers to position elements:
# Center elements
with st.container(horizontal_alignment="center"):
st.image("logo.png", width=200)
st.title("Welcome")
# Right-align elements
with st.container(horizontal_alignment="right"):
st.button("Settings", icon=":material/settings:")
# Distribute evenly (great for button groups)
with st.container(horizontal=True, horizontal_alignment="distribute"):
st.button("Cancel")
st.button("Save")
st.button("Submit")Options: "left" (default), "center", "right", "distribute"
Use border=True on containers for visual grouping. See building-streamlit-dashboards for dashboard-specific patterns like KPI cards.
with st.container(border=True):
st.subheader("Section title")
st.write("Grouped content here")Organize content into switchable views:
tab1, tab2 = st.tabs(["Chart", "Data"])
with tab1:
st.line_chart(data)
with tab2:
st.dataframe(df)Collapsible sections for secondary content:
with st.expander("See details"):
st.write("Hidden content here")
st.code("print('hello')")st.empty() creates a single-element placeholder that can be updated or cleared:
placeholder = st.empty()
# Update the placeholder
placeholder.text("Loading...")
result = load_data()
placeholder.dataframe(result)
# Clear it
placeholder.empty()Click to reveal content:
with st.popover("Settings"):
st.checkbox("Dark mode")
st.slider("Font size", 10, 24)Use @st.dialog for UI that doesn't need to be always visible:
@st.dialog("Confirm deletion")
def confirm_delete(item_name):
st.write(f"Are you sure you want to delete **{item_name}**?")
if st.button("Delete", type="primary"):
delete_item(item_name)
st.rerun()
if st.button("Delete item"):
confirm_delete("My Document")Key points:
st.session_state to pass widget values from the dialog to the main appst.rerun() to close dialog and refresh main appdismissible=False for forced actionsst.sidebar is not supported inside dialogsWhen to use dialogs:
Control spacing between elements with gap on containers:
# Remove spacing for tight list-like UIs
with st.container(gap=None, border=True):
for item in items:
st.checkbox(item.text)
# Explicit gap sizes
with st.container(gap="small"):
...Add vertical space with st.space:
st.space("small") # Small gap
st.space("medium") # Medium gap
st.space("large") # Large gap
st.space(50) # Custom pixelsControl element sizing:
# Stretch to fill available space (equal height columns)
cols = st.columns(2)
with cols[0].container(border=True, height="stretch"):
st.line_chart(data)
with cols[1].container(border=True, height="stretch"):
st.dataframe(df)
# Shrink to content size
st.container(width="content")
# Fixed pixel sizes
st.container(height=300)© iusztinpaul, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agents/skills/developing-with-streamlit/skills/using-streamlit-layouts of iusztinpaul/designing-real-world-ai-agents-workshop.
Open the folder on GitHubat commit ea4f6e9
Using Streamlit Layouts next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Using Streamlit Layouts this skilliusztinpaul/designing-real-world-ai-agents-workshop | 512 | — | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| Paper FiguresEvoScientist/EvoSkills | 476 | 1 repos | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Changesetwhitphx/stlite | 1.7k | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Updating Docs For Releasestreamlit/docs | 178 | — | ~4k | Automated safety check: Pass | Apache-2.0 | |
| Echarts Streamlit Syncandfanilo/streamlit-echarts-demo | 146 | — | ~1k | Automated safety check: Pass | None | |
| Streamlit Rebasewhitphx/stlite | 1.7k | — | ~2.3k | Automated safety check: Pass | Apache-2.0 |
EvoScientist/EvoSkills
A skill your agent uses to produce standalone, publication-ready PNG graphics and reproducible matplotlib scripts from tabular data (CSVs or DataFrames).
whitphx/stlite
Create or update a changeset fragment (.changeset/.md) reflecting the changes made in the current session or branch.
streamlit/docs
Update the streamlit/docs repo for a new Streamlit release. An agent skill from streamlit/docs.
andfanilo/streamlit-echarts-demo
Transform ECharts example URLs into Streamlit stecharts components.
whitphx/stlite
Rebase our custom fork of the Streamlit repository onto new upstream Streamlit release
databricks-solutions/databricks-apps-cookbook
Invoke ML models, run vector search, and connect to MCP servers from Databricks Apps.
iusztinpaul/designing-real-world-ai-agents-workshop
Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component.
iusztinpaul/designing-real-world-ai-agents-workshop
Building chat interfaces in Streamlit. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
iusztinpaul/designing-real-world-ai-agents-workshop
Building dashboards in Streamlit. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
iusztinpaul/designing-real-world-ai-agents-workshop
Building multi-page Streamlit apps. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
iusztinpaul/designing-real-world-ai-agents-workshop
Choosing the right Streamlit selection widget. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
iusztinpaul/designing-real-world-ai-agents-workshop
Connecting Streamlit apps to Snowflake. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
Works with
Structuring Streamlit app layouts. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop. Using Streamlit Layouts is an agent skill from iusztinpaul/designing-real-world-ai-agents-workshop. Structuring Streamlit app layouts.
Using Streamlit Layouts fits situations like: placing content in sidebars.
Run `npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a claude-code`. Or copy the skill folder (.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts in iusztinpaul/designing-real-world-ai-agents-workshop) into .claude/skills/using-streamlit-layouts in your project. Claude Code loads it when a task matches its description.
Run `npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a codex`. Or copy the skill folder (.agents/skills/developing-with-streamlit/skills/using-streamlit-layouts in iusztinpaul/designing-real-world-ai-agents-workshop) into .agents/skills/using-streamlit-layouts in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill using-streamlit-layouts -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/using-streamlit-layouts, .gemini/skills/using-streamlit-layouts, .github/skills/using-streamlit-layouts and .opencode/skills/using-streamlit-layouts in your project.
SKILL.md names no scripts, command-line tools or credentials: Using Streamlit Layouts is instructions for the agent only. Our summary lists: Python 3.
SKILL.md names 1 domain. As links in the text: docs.streamlit.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Using Streamlit Layouts is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Using Streamlit Layouts: Paper Figures (EvoScientist/EvoSkills, 476 stars), Changeset (whitphx/stlite, 1.7k stars), Updating Docs For Release (streamlit/docs, 178 stars) and Echarts Streamlit Sync (andfanilo/streamlit-echarts-demo, 146 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
iusztinpaul (a GitHub user) maintains it in iusztinpaul/designing-real-world-ai-agents-workshop, which has 512 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on June 3, 2026.
Source: iusztinpaul/designing-real-world-ai-agents-workshop on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.