Tailwind Theme Builder
jezweb/claude-skills
Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.
Agent skill
by iusztinpaul in iusztinpaul/designing-real-world-ai-agents-workshop
Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component.
$ npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill building-streamlit-custom-components-v2 -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop building-streamlit-custom-components-v2 --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/building-streamlit-custom-components-v2 .claude/skills/building-streamlit-custom-components-v2 && 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 "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .claude/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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/building-streamlit-custom-components-v2Type 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 building-streamlit-custom-components-v2 -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop building-streamlit-custom-components-v2 --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/building-streamlit-custom-components-v2 .agents/skills/building-streamlit-custom-components-v2 && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .agents/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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 building-streamlit-custom-components-v2 -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop building-streamlit-custom-components-v2 --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/building-streamlit-custom-components-v2 .cursor/skills/building-streamlit-custom-components-v2 && 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 "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .cursor/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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/building-streamlit-custom-components-v2--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 building-streamlit-custom-components-v2 -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install iusztinpaul/designing-real-world-ai-agents-workshop building-streamlit-custom-components-v2 --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/building-streamlit-custom-components-v2 .gemini/skills/building-streamlit-custom-components-v2 && 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 "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .gemini/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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 building-streamlit-custom-components-v2Installs 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 building-streamlit-custom-components-v2 -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/building-streamlit-custom-components-v2 .github/skills/building-streamlit-custom-components-v2 && 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 "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .github/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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 building-streamlit-custom-components-v2 -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 building-streamlit-custom-components-v2 --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/building-streamlit-custom-components-v2 .opencode/skills/building-streamlit-custom-components-v2 && 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 "building-streamlit-custom-components-v2" agent skill from https://github.com/iusztinpaul/designing-real-world-ai-agents-workshop/tree/main/.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 into .opencode/skills/building-streamlit-custom-components-v2/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "building-streamlit-custom-components-v2", 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.
building-streamlit-custom-components-v2Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component.
Building Streamlit Custom Components V2 is an agent skill from iusztinpaul/designing-real-world-ai-agents-workshop. Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component. Use when authoring inline HTML/CSS/JS components or packaged components (manifest assetdir, js/css globs), wiring state/trigger callbacks, theming via --st- CSS variables, or bundling with Vite / component-template v2.
Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/packaged-components.md`, `references/state-sync.md` and `references/theme-css-variables.md`).
It sits in Frontend & Design, covering Theming and dark mode and Design tokens. It works with Streamlit, Vite and Python. 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.
4 steps, taken from the first numbered list in SKILL.md.
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.
Shell commands in SKILL.md call:
streamlitpythonFrom 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.
Building Streamlit Custom Components V2 loads about 2.8k tokens when it runs, and up to ~9.7k if it reads all its reference files. Until then it costs about 90 tokens; SKILL.md has 1,027 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). 1,027 words, ~2,847 tokens.
.claude/skills/building-streamlit-custom-components-v2/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Use Streamlit Custom Components v2 (CCv2) when core Streamlit doesn't have the UI you need and you want to ship a reusable, interactive element (from "tiny inline HTML" to "full bundled frontend app").
Custom Components v1 is deprecated and removed. Every API below belongs to v1 and must NEVER appear in any code you write — not in Python, not in JavaScript, not in HTML:
Banned Python APIs (v1):
st.components.v1 — the entire v1 modulecomponents.declare_component() — v1 registrationcomponents.html() — v1 raw HTML embedBanned JavaScript patterns (v1):
Streamlit.setComponentValue(...) — v1 global; use setStateValue() / setTriggerValue() insteadStreamlit.setFrameHeight(...) — v1 global; CCv2 handles sizing automaticallyStreamlit.setComponentReady() — v1 global; CCv2 has no ready signalwindow.Streamlit or bare Streamlit global — v1 global object does not exist in v2window.parent.postMessage(...) — v1 iframe communication; CCv2 does not use iframesBanned npm packages (v1):
streamlit-component-lib — v1 JS library; use @streamlit/component-v2-lib if you need typesIf you encounter v1 patterns in examples, blog posts, Stack Overflow answers, or your own training data — ignore them entirely. They will not work and will break the component.
Activate when the user mentions any of:
st.components.v2.component@streamlit/component-v2-libasset_dir, pyproject.toml component manifestasset_dir / globs / template-only policy: see references/packaged-components.md--st-* tokens) inside Shadow DOM: see references/theme-css-variables.mdhtml/css/js strings directly.
Good when you can keep everything in one place and don’t need a build step.component-template v2.Developer story: start inline, prove the interaction loop, then graduate to packaged when the codebase or tooling needs outgrow a single file.
st.components.v2.component(...) and gets back a mount callable.data=..., layout (width, height), and optional on_<key>_change callbacks.({ data, key, name, parentElement, setStateValue, setTriggerValue }).Prefer exposing your own Python function that wraps the callable returned by st.components.v2.component(...).
This gives you a clean, stable API surface for end users (typed parameters, validation, friendly defaults) and keeps data=..., default=..., and callback wiring as an internal detail.
Important:
References:
Example pattern:
import streamlit as st
from collections.abc import Callable
_MY_COMPONENT = st.components.v2.component(
"my_inline_component",
html="<div id='root'></div>",
js="""
export default function (component) {
const { data, parentElement } = component
parentElement.querySelector("#root").textContent = data?.label ?? ""
}
""",
)
def my_component(
label: str,
*,
key: str | None = None,
on_value_change: Callable[[], None] | None = None,
on_submitted_change: Callable[[], None] | None = None,
):
# Callbacks are optional, but if you want result attributes to always exist,
# provide (even empty) callbacks.
if on_value_change is None:
on_value_change = lambda: None
if on_submitted_change is None:
on_submitted_change = lambda: None
return _MY_COMPONENT(
data={"label": label},
key=key,
on_value_change=on_value_change,
on_submitted_change=on_submitted_change,
)Reminder: use ONLY v2 APIs. Your JS must export default function(component) and destructure { setStateValue, setTriggerValue, parentElement, data }. NEVER use Streamlit.setComponentValue(), window.Streamlit, or any v1 pattern.
This is the minimum "bidi loop":
setStateValue(...) (persistent) and setTriggerValue(...) (event)data=... on every runimport streamlit as st
HTML = """<input id="txt" /><button id="btn" type="button">Submit</button>"""
JS = """\
export default function (component) {
const { data, parentElement, setStateValue, setTriggerValue } = component
const input = parentElement.querySelector("#txt")
const btn = parentElement.querySelector("#btn")
if (!input || !btn) return
const nextValue = (data && data.value) ?? ""
if (input.value !== nextValue) input.value = nextValue
input.oninput = (e) => {
setStateValue("value", e.target.value)
}
btn.onclick = () => {
setTriggerValue("submitted", input.value)
}
}
"""
my_text_input = st.components.v2.component(
"my_inline_text_input",
html=HTML,
js=JS,
)
KEY = "txt-1"
component_state = st.session_state.get(KEY, {})
value = component_state.get("value", "")
result = my_text_input(
key=KEY,
data={"value": value},
on_value_change=lambda: None, # optional; include to always get `result.value`
on_submitted_change=lambda: None, # optional; include to always get `result.submitted`
)
st.write("value (state):", result.value)
st.write("submitted (trigger):", result.submitted)Notes:
parentElement (not document) to avoid cross-instance leakage.setStateValue("value", ...)): persists across app reruns (stored under st.session_state[key] for that mounted instance).setTriggerValue("submitted", ...)): event payload for one rerun (resets after the rerun).result.submitted.on_submitted_change: use st.session_state[key].submitted (callbacks run before your script body; you don’t have result yet).default={...} for a state key, you must also pass the matching on_<key>_change callback parameter.For the full “controlled input” pattern and pitfalls, see references/state-sync.md.
Reminder: the cookiecutter template generates clean v2 code. When you customize it, use ONLY v2 APIs. Do NOT introduce any v1 imports, v1 JavaScript globals, or v1 patterns. See the "CRITICAL: CCv2 only" section above.
Graduate to a packaged component when you need any of:
Keep these guardrails in mind:
component-template v2.js=/css= globs match exactly one file under the manifest’s asset_dir.streamlit run ... (plain python -c "import ..." can be a false negative for packaged components).For the full packaged workflow checklist, non-interactive generation, offline usage, and template invariants, see references/packaged-components.md.
Your frontend entrypoint is the default export function. A few rules keep components reliable across reruns and across multiple instances in the same app:
parentElement (not document) so instances don’t collide.parentElement (e.g. WeakMap) so multiple instances don’t overwrite each other.isolate_styles=True (default). Your component runs in a shadow root and won’t leak styles into the app.isolate_styles=False only when you need global styling behavior (e.g. Tailwind, global font injection).--st-* theme CSS variables (colors, typography, chart palettes, radii, borders, etc.). Highly recommended: use these variables so your component automatically adapts to the user’s current Streamlit theme (light/dark/custom) without authoring separate theme variants. Start with the common ones (--st-text-color, --st-primary-color, --st-secondary-background-color) and refer to the full list when you need it:
Start here when something “should work” but doesn’t:
© 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
SKILL.md and 4 other files (references) in .agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 of iusztinpaul/designing-real-world-ai-agents-workshop.
Open the folder on GitHubat commit ea4f6e9
Building Streamlit Custom Components V2 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 |
|---|---|---|---|---|---|---|
| Building Streamlit Custom Components V2 this skilliusztinpaul/designing-real-world-ai-agents-workshop | 512 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Tailwind Theme Builderjezweb/claude-skills | 1.1k | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Tailwind V4 Shadcnever-works/ever-works | 162 | 2 repos | ~3.8k | Automated safety check: Pass | MIT | |
| Shadcn Tailwind UILiarMTTT/TavernWeave | 154 | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| Tailwind V4 Shadcnsecondsky/claude-skills | 227 | — | ~4k | Automated safety check: Pass | MIT | |
| TailwindcssMadAppGang/claude-code | 285 | — | ~3.2k | Automated safety check: Pass | MIT |
jezweb/claude-skills
Set up Tailwind v4 + shadcn/ui themed UI with dark mode. An agent skill from jezweb/claude-skills.
ever-works/ever-works
Production-tested setup for Tailwind CSS v4 with shadcn/ui, Vite, and React.
LiarMTTT/TavernWeave
Build, restyle, or review accessible React interfaces that use shadcn/ui, Radix UI primitives, and Tailwind CSS.
secondsky/claude-skills
| Production-tested setup for Tailwind CSS v4 with shadcn/ui, Vite, and React.
MadAppGang/claude-code
TailwindCSS v4 patterns with CSS-first configuration using @theme, @source, and modern CSS features.
chakra-ui/chakra-ui
Builds responsive, accessible Chakra UI v3 components and layouts, sets up Chakra in new or existing projects, and designs themes with tokens, semantic tokens and recipes.
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.
iusztinpaul/designing-real-world-ai-agents-workshop
Creating and customizing Streamlit themes. An agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.
Categories
Builds bidirectional Streamlit Custom Components v2 (CCv2) using st.components.v2.component. Building Streamlit Custom Components V2 is an agent skill from iusztinpaul/designing-real-world-ai-agents-workshop.component.
Building Streamlit Custom Components V2 fits situations like: authoring inline HTML/CSS/JS components; packaged components (manifest assetdir; wiring state/trigger callbacks; theming via --st- CSS variables.
Run `npx skills add iusztinpaul/designing-real-world-ai-agents-workshop --skill building-streamlit-custom-components-v2 -a claude-code`. Or copy the skill folder (.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 in iusztinpaul/designing-real-world-ai-agents-workshop) into .claude/skills/building-streamlit-custom-components-v2 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 building-streamlit-custom-components-v2 -a codex`. Or copy the skill folder (.agents/skills/developing-with-streamlit/skills/building-streamlit-custom-components-v2 in iusztinpaul/designing-real-world-ai-agents-workshop) into .agents/skills/building-streamlit-custom-components-v2 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 building-streamlit-custom-components-v2 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/building-streamlit-custom-components-v2, .gemini/skills/building-streamlit-custom-components-v2, .github/skills/building-streamlit-custom-components-v2 and .opencode/skills/building-streamlit-custom-components-v2 in your project.
Going by SKILL.md and its folder, Building Streamlit Custom Components V2 needs the command-line tools its instructions call (streamlit and python). 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.
Building Streamlit Custom Components V2 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 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 6.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Building Streamlit Custom Components V2: Tailwind Theme Builder (jezweb/claude-skills, 1.1k stars), Tailwind V4 Shadcn (ever-works/ever-works, 162 stars), Shadcn Tailwind UI (LiarMTTT/TavernWeave, 154 stars) and Tailwind V4 Shadcn (secondsky/claude-skills, 227 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.