Agent Skillssediman-agent/OpenSkynet › huggingface-gradio

huggingface-gradio

GitHub

用于在Python中构建交互式Web UI和机器学习演示的Gradio技能。涵盖Interface、Blocks及ChatInterface核心模式,支持组件布局、事件监听、流式输入输出及自定义样式,适用于创建或编辑Gradio应用与聊天机器人。

skills/huggingface_skills/huggingface-gradio/SKILL.md sediman-agent/OpenSkynet

Trigger Scenarios

创建Gradio Web界面 开发机器学习演示Demo 实现聊天机器人UI 配置Gradio组件与事件监听 调整Gradio应用布局

Install

npx skills add sediman-agent/OpenSkynet --skill huggingface-gradio -g -y
More Options

Non-standard path

npx skills add https://github.com/sediman-agent/OpenSkynet/tree/main/skills/huggingface_skills/huggingface-gradio -g -y

Use without installing

npx skills use sediman-agent/OpenSkynet@huggingface-gradio

指定 Agent (Claude Code)

npx skills add sediman-agent/OpenSkynet --skill huggingface-gradio -a claude-code -g -y

安装 repo 全部 skill

npx skills add sediman-agent/OpenSkynet --all -g -y

预览 repo 内 skill

npx skills add sediman-agent/OpenSkynet --list

SKILL.md

Frontmatter
{
    "name": "huggingface-gradio",
    "description": "Build Gradio web UIs and demos in Python. Use when creating or editing Gradio apps, components, event listeners, layouts, or chatbots."
}

Gradio

Gradio is a Python library for building interactive web UIs and ML demos. This skill covers the core API, patterns, and examples.

Guides

Detailed guides on specific topics (read these when relevant):

Core Patterns

Interface (high-level): wraps a function with input/output components.

import gradio as gr

def greet(name):
    return f"Hello {name}!"

gr.Interface(fn=greet, inputs="text", outputs="text").launch()

Blocks (low-level): flexible layout with explicit event wiring.

import gradio as gr

with gr.Blocks() as demo:
    name = gr.Textbox(label="Name")
    output = gr.Textbox(label="Greeting")
    btn = gr.Button("Greet")
    btn.click(fn=lambda n: f"Hello {n}!", inputs=name, outputs=output)

demo.launch()

ChatInterface: high-level wrapper for chatbot UIs.

import gradio as gr

def respond(message, history):
    return f"You said: {message}"

gr.ChatInterface(fn=respond).launch()

Key Component Signatures

Textbox(value: str | I18nData | Callable | None = None, type: Literal['text', 'password', 'email'] = "text", lines: int = 1, max_lines: int | None = None, placeholder: str | I18nData | None = None, label: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, autofocus: bool = False, autoscroll: bool = True, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", text_align: Literal['left', 'right'] | None = None, rtl: bool = False, buttons: list[Literal['copy'] | Button] | None = None, max_length: int | None = None, submit_btn: str | bool | None = False, stop_btn: str | bool | None = False, html_attributes: InputHTMLAttributes | None = None)

Creates a textarea for user to enter string input or display string output..

Number(value: float | Callable | None = None, label: str | I18nData | None = None, placeholder: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", buttons: list[Button] | None = None, precision: int | None = None, minimum: float | None = None, maximum: float | None = None, step: float = 1)

Creates a numeric field for user to enter numbers as input or display numeric output..

Slider(minimum: float = 0, maximum: float = 100, value: float | Callable | None = None, step: float | None = None, precision: int | None = None, label: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", randomize: bool = False, buttons: list[Literal['reset']] | None = None)

Creates a slider that ranges from {minimum} to {maximum} with a step size of {step}..

Checkbox(value: bool | Callable = False, label: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", buttons: list[Button] | None = None)

Creates a checkbox that can be set to True or False.

Dropdown(choices: Sequence[str | int | float | tuple[str, str | int | float]] | None = None, value: str | int | float | Sequence[str | int | float] | Callable | DefaultValue | None = DefaultValue(), type: Literal['value', 'index'] = "value", multiselect: bool | None = None, allow_custom_value: bool = False, max_choices: int | None = None, filterable: bool = True, label: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", buttons: list[Button] | None = None)

Creates a dropdown of choices from which a single entry or multiple entries can be selected (as an input component) or displayed (as an output component)..

Radio(choices: Sequence[str | int | float | tuple[str, str | int | float]] | None = None, value: str | int | float | Callable | None = None, type: Literal['value', 'index'] = "value", label: str | I18nData | None = None, info: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", rtl: bool = False, buttons: list[Button] | None = None)

Creates a set of (string or numeric type) radio buttons of which only one can be selected..

Image(value: str | PIL.Image.Image | np.ndarray | Callable | None = None, format: str = "webp", height: int | str | None = None, width: int | str | None = None, image_mode: Literal['1', 'L', 'P', 'RGB', 'RGBA', 'CMYK', 'YCbCr', 'LAB', 'HSV', 'I', 'F'] | None = "RGB", sources: list[Literal['upload', 'webcam', 'clipboard']] | Literal['upload', 'webcam', 'clipboard'] | None = None, type: Literal['numpy', 'pil', 'filepath'] = "numpy", label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, buttons: list[Literal['download', 'share', 'fullscreen'] | Button] | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, streaming: bool = False, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", webcam_options: WebcamOptions | None = None, placeholder: str | None = None, watermark: WatermarkOptions | None = None)

Creates an image component that can be used to upload images (as an input) or display images (as an output)..

Audio(value: str | Path | tuple[int, np.ndarray] | Callable | None = None, sources: list[Literal['upload', 'microphone']] | Literal['upload', 'microphone'] | None = None, type: Literal['numpy', 'filepath'] = "numpy", label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, streaming: bool = False, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", format: Literal['wav', 'mp3'] | None = None, autoplay: bool = False, editable: bool = True, buttons: list[Literal['download', 'share'] | Button] | None = None, waveform_options: WaveformOptions | dict | None = None, loop: bool = False, recording: bool = False, subtitles: str | Path | list[dict[str, Any]] | None = None, playback_position: float = 0)

Creates an audio component that can be used to upload/record audio (as an input) or display audio (as an output)..

Video(value: str | Path | Callable | None = None, format: str | None = None, sources: list[Literal['upload', 'webcam']] | Literal['upload', 'webcam'] | None = None, height: int | str | None = None, width: int | str | None = None, label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", webcam_options: WebcamOptions | None = None, include_audio: bool | None = None, autoplay: bool = False, buttons: list[Literal['download', 'share'] | Button] | None = None, loop: bool = False, streaming: bool = False, watermark: WatermarkOptions | None = None, subtitles: str | Path | list[dict[str, Any]] | None = None, playback_position: float = 0)

Creates a video component that can be used to upload/record videos (as an input) or display videos (as an output).

File(value: str | list[str] | Callable | None = None, file_count: Literal['single', 'multiple', 'directory'] = "single", file_types: list[str] | None = None, type: Literal['filepath', 'binary'] = "filepath", label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, height: int | str | float | None = None, interactive: bool | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", allow_reordering: bool = False, buttons: list[Button] | None = None)

Creates a file component that allows uploading one or more generic files (when used as an input) or displaying generic files or URLs for download (as output).

Chatbot(value: list[MessageDict | Message] | Callable | None = None, label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, container: bool = True, scale: int | None = None, min_width: int = 160, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, autoscroll: bool = True, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", height: int | str | None = 400, resizable: bool = False, max_height: int | str | None = None, min_height: int | str | None = None, editable: Literal['user', 'all'] | None = None, latex_delimiters: list[dict[str, str | bool]] | None = None, rtl: bool = False, buttons: list[Literal['share', 'copy', 'copy_all'] | Button] | None = None, watermark: str | None = None, avatar_images: tuple[str | Path | None, str | Path | None] | None = None, sanitize_html: bool = True, render_markdown: bool = True, feedback_options: list[str] | tuple[str, ...] | None = ('Like', 'Dislike'), feedback_value: Sequence[str | None] | None = None, line_breaks: bool = True, layout: Literal['panel', 'bubble'] | None = None, placeholder: str | None = None, examples: list[ExampleMessage] | None = None, allow_file_downloads: <class 'inspect._empty'> = True, group_consecutive_messages: bool = True, allow_tags: list[str] | bool = True, reasoning_tags: list[tuple[str, str]] | None = None, like_user_message: bool = False)

Creates a chatbot that displays user-submitted messages and responses.

Button(value: str | I18nData | Callable = "Run", every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, variant: Literal['primary', 'secondary', 'stop', 'huggingface'] = "secondary", size: Literal['sm', 'md', 'lg'] = "lg", icon: str | Path | None = None, link: str | None = None, link_target: Literal['_self', '_blank', '_parent', '_top'] = "_self", visible: bool | Literal['hidden'] = True, interactive: bool = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", scale: int | None = None, min_width: int | None = None)

Creates a button that can be assigned arbitrary .click() events.

Markdown(value: str | I18nData | Callable | None = None, label: str | I18nData | None = None, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool | None = None, rtl: bool = False, latex_delimiters: list[dict[str, str | bool]] | None = None, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", sanitize_html: bool = True, line_breaks: bool = False, header_links: bool = False, height: int | str | None = None, max_height: int | str | None = None, min_height: int | str | None = None, buttons: list[Literal['copy']] | None = None, container: bool = False, padding: bool = False)

Used to render arbitrary Markdown output.

HTML(value: Any | Callable | None = None, label: str | I18nData | None = None, html_template: str = "${value}", css_template: str = "", js_on_load: str | None = "element.addEventListener('click', function() { trigger('click') });", apply_default_css: bool = True, every: Timer | float | None = None, inputs: Component | Sequence[Component] | set[Component] | None = None, show_label: bool = False, visible: bool | Literal['hidden'] = True, elem_id: str | None = None, elem_classes: list[str] | str | None = None, render: bool = True, key: int | str | tuple[int | str, ...] | None = None, preserved_by_key: list[str] | str | None = "value", min_height: int | None = None, max_height: int | None = None, container: bool = False, padding: bool = False, autoscroll: bool = False, buttons: list[Button] | None = None, server_functions: list[Callable] | None = None, props: Any)

Creates a component with arbitrary HTML.

Custom HTML Components

If a task requires significant customization of an existing component or a component that doesn't exist in Gradio, you can create one with gr.HTML. It supports html_template (with ${} JS expressions and {{}} Handlebars syntax), css_template for scoped styles, and js_on_load for interactivity — where props.value updates the component value and trigger('event_name') fires Gradio events. For reuse, subclass gr.HTML and define api_info() for API/MCP support. See the full guide.

Here's an example that shows how to create and use these kinds of components:

import gradio as gr

class StarRating(gr.HTML):
    def __init__(self, label, value=0, **kwargs):
        html_template = """
        <h2>${label} rating:</h2>
        ${Array.from({length: 5}, (_, i) => `<img class='${i < value ? '' : 'faded'}' src='https://upload.wikimedia.org/wikipedia/commons/d/df/Award-star-gold-3d.svg'>`).join('')}
        """
        css_template = """
            img { height: 50px; display: inline-block; cursor: pointer; }
            .faded { filter: grayscale(100%); opacity: 0.3; }
        """
        js_on_load = """
            const imgs = element.querySelectorAll('img');
            imgs.forEach((img, index) => {
                img.addEventListener('click', () => {
                    props.value = index + 1;
                });
            });
        """
        super().__init__(value=value, label=label, html_template=html_template, css_template=css_template, js_on_load=js_on_load, **kwargs)

    def api_info(self):
        return {"type": "integer", "minimum": 0, "maximum": 5}


with gr.Blocks() as demo:
    gr.Markdown("# Restaurant Review")
    food_rating = StarRating(label="Food", value=3)
    service_rating = StarRating(label="Service", value=3)
    ambience_rating = StarRating(label="Ambience", value=3)
    average_btn = gr.Button("Calculate Average Rating")
    rating_output = StarRating(label="Average", value=3)
    def calculate_average(food, service, ambience):
        return round((food + service + ambience) / 3)
    average_btn.click(
        fn=calculate_average,
        inputs=[food_rating, service_rating, ambience_rating],
        outputs=rating_output
    )

demo.launch()

Event Listeners

All event listeners share the same signature:

component.event_name(
    fn: Callable | None | Literal["decorator"] = "decorator",
    inputs: Component | Sequence[Component] | set[Component] | None = None,
    outputs: Component | Sequence[Component] | set[Component] | None = None,
    api_name: str | None = None,
    api_description: str | None | Literal[False] = None,
    scroll_to_output: bool = False,
    show_progress: Literal["full", "minimal", "hidden"] = "full",
    show_progress_on: Component | Sequence[Component] | None = None,
    queue: bool = True,
    batch: bool = False,
    max_batch_size: int = 4,
    preprocess: bool = True,
    postprocess: bool = True,
    cancels: dict[str, Any] | list[dict[str, Any]] | None = None,
    trigger_mode: Literal["once", "multiple", "always_last"] | None = None,
    js: str | Literal[True] | None = None,
    concurrency_limit: int | None | Literal["default"] = "default",
    concurrency_id: str | None = None,
    api_visibility: Literal["public", "private", "undocumented"] = "public",
    time_limit: int | None = None,
    stream_every: float = 0.5,
    key: int | str | tuple[int | str, ...] | None = None,
    validator: Callable | None = None,
) -> Dependency

Supported events per component:

  • AnnotatedImage: select
  • Audio: stream, change, clear, play, pause, stop, pause, start_recording, pause_recording, stop_recording, upload, input
  • BarPlot: select, double_click
  • BrowserState: change
  • Button: click
  • Chatbot: change, select, like, retry, undo, example_select, option_select, clear, copy, edit
  • Checkbox: change, input, select
  • CheckboxGroup: change, input, select
  • ClearButton: click
  • Code: change, input, focus, blur
  • ColorPicker: change, input, submit, focus, blur
  • Dataframe: change, input, select, edit
  • Dataset: click, select
  • DateTime: change, submit
  • DeepLinkButton: click
  • Dialogue: change, input, submit
  • DownloadButton: click
  • Dropdown: change, input, select, focus, blur, key_up
  • DuplicateButton: click
  • File: change, select, clear, upload, delete, download
  • FileExplorer: change, input, select
  • Gallery: select, upload, change, delete, preview_close, preview_open
  • HTML: change, input, click, double_click, submit, stop, edit, clear, play, pause, end, start_recording, pause_recording, stop_recording, focus, blur, upload, release, select, stream, like, example_select, option_select, load, key_up, apply, delete, tick, undo, retry, expand, collapse, download, copy
  • HighlightedText: change, select
  • Image: clear, change, stream, select, upload, input
  • ImageEditor: clear, change, input, select, upload, apply
  • ImageSlider: clear, change, stream, select, upload, input
  • JSON: change
  • Label: change, select
  • LinePlot: select, double_click
  • LoginButton: click
  • Markdown: change, copy
  • Model3D: change, upload, edit, clear
  • MultimodalTextbox: change, input, select, submit, focus, blur, stop
  • Navbar: change
  • Number: change, input, submit, focus, blur
  • ParamViewer: change, upload
  • Plot: change
  • Radio: select, change, input
  • ScatterPlot: select, double_click
  • SimpleImage: clear, change, upload
  • Slider: change, input, release
  • State: change
  • Textbox: change, input, select, submit, focus, blur, stop, copy
  • Timer: tick
  • UploadButton: click, upload
  • Video: change, clear, start_recording, stop_recording, stop, play, pause, end, upload, input

Prediction CLI

The gradio CLI includes info and predict commands for interacting with Gradio apps programmatically. These are especially useful for coding agents that need to use Spaces in their workflows.

gradio info — Discover endpoints and parameters

gradio info <space_id_or_url>

Returns a JSON payload describing all endpoints, their parameters (with types and defaults), and return values.

gradio info gradio/calculator
# {
#   "/predict": {
#     "parameters": [
#       {"name": "num1", "required": true, "default": null, "type": {"type": "number"}},
#       {"name": "operation", "required": true, "default": null, "type": {"enum": ["add", "subtract", "multiply", "divide"], "type": "string"}},
#       {"name": "num2", "required": true, "default": null, "type": {"type": "number"}}
#     ],
#     "returns": [{"name": "output", "type": {"type": "number"}}],
#     "description": ""
#   }
# }

File-type parameters show "type": "filepath" with instructions to include "meta": {"_type": "gradio.FileData"} — this signals the file will be uploaded to the remote server.

gradio predict — Send predictions

gradio predict <space_id_or_url> <endpoint> <json_payload>

Returns a JSON object with named output keys.

# Simple numeric prediction
gradio predict gradio/calculator /predict '{"num1": 5, "operation": "multiply", "num2": 3}'
# {"output": 15}

# Image generation
gradio predict black-forest-labs/FLUX.2-dev /infer '{"prompt": "A majestic dragon"}'
# {"Result": "/tmp/gradio/.../image.webp", "Seed": 1117868604}

# File upload (must include meta key)
gradio predict gradio/image_mod /predict '{"image": {"path": "/path/to/image.png", "meta": {"_type": "gradio.FileData"}}}'
# {"output": "/tmp/gradio/.../output.png"}

Both commands accept --token for accessing private Spaces.

Additional Reference

Version History

  • c9d8953 Current 2026-07-05 19:55

Same Skill Collection

skills/anthropics_skills/algorithmic-art/SKILL.md
skills/anthropics_skills/brand-guidelines/SKILL.md
skills/anthropics_skills/canvas-design/SKILL.md
skills/anthropics_skills/doc-coauthoring/SKILL.md
skills/anthropics_skills/frontend-design/SKILL.md
skills/anthropics_skills/internal-comms/SKILL.md
skills/anthropics_skills/mcp-builder/SKILL.md
skills/anthropics_skills/pdf/SKILL.md
skills/anthropics_skills/skill-creator/SKILL.md
skills/anthropics_skills/slack-gif-creator/SKILL.md
skills/anthropics_skills/theme-factory/SKILL.md
skills/anthropics_skills/web-artifacts-builder/SKILL.md
skills/anthropics_skills/webapp-testing/SKILL.md
skills/browser-use_browser-use/browser-use/SKILL.md
skills/browser-use_browser-use/remote-browser/SKILL.md
skills/browser-use_video-use/manim-video/SKILL.md
skills/browser-use_video-use/video-use/SKILL.md
skills/cloudflare_skills/agents-sdk/SKILL.md
skills/cloudflare_skills/cloudflare/SKILL.md
skills/cloudflare_skills/durable-objects/SKILL.md
skills/cloudflare_skills/sandbox-sdk/SKILL.md
skills/cloudflare_skills/web-perf/SKILL.md
skills/cloudflare_skills/workers-best-practices/SKILL.md
skills/cloudflare_skills/wrangler/SKILL.md
skills/cursor_plugins/cli-for-agent/skills/cli-for-agents/SKILL.md
skills/cursor_plugins/continual-learning/skills/continual-learning/SKILL.md
skills/cursor_plugins/create-plugin/skills/create-plugin-scaffold/SKILL.md
skills/cursor_plugins/create-plugin/skills/review-plugin-submission/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/check-compiler-errors/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-cli/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/control-ui/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/deslop/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/fix-merge-conflicts/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/get-pr-comments/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/loop-on-ci/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/make-pr-easy-to-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/new-branch-and-pr/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/review-and-ship/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/run-smoke-tests/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/thermo-nuclear-code-quality-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/verify-this/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/weekly-review/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/what-did-i-get-done/SKILL.md
skills/cursor_plugins/cursor-team-kit/skills/workflow-from-chats/SKILL.md
skills/cursor_plugins/docs-canvas/skills/docs-canvas/SKILL.md
skills/cursor_plugins/orchestrate/skills/orchestrate/SKILL.md
skills/cursor_plugins/pr-review-canvas/skills/pr-review-canvas/SKILL.md
skills/cursor_plugins/pstack/skills/architect/SKILL.md
skills/cursor_plugins/pstack/skills/arena/SKILL.md
skills/cursor_plugins/pstack/skills/automate-me/SKILL.md
skills/cursor_plugins/pstack/skills/figure-it-out/SKILL.md
skills/cursor_plugins/pstack/skills/how/SKILL.md
skills/cursor_plugins/pstack/skills/interrogate/SKILL.md
skills/cursor_plugins/pstack/skills/poteto-mode/SKILL.md
skills/cursor_plugins/pstack/skills/principle-boundary-discipline/SKILL.md
skills/cursor_plugins/pstack/skills/principle-build-the-lever/SKILL.md
skills/cursor_plugins/pstack/skills/principle-encode-lessons-in-structure/SKILL.md
skills/cursor_plugins/pstack/skills/principle-exhaust-the-design-space/SKILL.md
skills/cursor_plugins/pstack/skills/principle-experience-first/SKILL.md
skills/cursor_plugins/pstack/skills/principle-fix-root-causes/SKILL.md
skills/cursor_plugins/pstack/skills/principle-foundational-thinking/SKILL.md
skills/cursor_plugins/pstack/skills/principle-guard-the-context-window/SKILL.md
skills/cursor_plugins/pstack/skills/principle-laziness-protocol/SKILL.md
skills/cursor_plugins/pstack/skills/principle-make-operations-idempotent/SKILL.md
skills/cursor_plugins/pstack/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md
skills/cursor_plugins/pstack/skills/principle-minimize-reader-load/SKILL.md
skills/cursor_plugins/pstack/skills/principle-never-block-on-the-human/SKILL.md
skills/cursor_plugins/pstack/skills/principle-outcome-oriented-execution/SKILL.md
skills/cursor_plugins/pstack/skills/principle-prove-it-works/SKILL.md
skills/cursor_plugins/pstack/skills/principle-redesign-from-first-principles/SKILL.md
skills/cursor_plugins/pstack/skills/principle-separate-before-serializing-shared-state/SKILL.md
skills/cursor_plugins/pstack/skills/principle-subtract-before-you-add/SKILL.md
skills/cursor_plugins/pstack/skills/principle-type-system-discipline/SKILL.md
skills/cursor_plugins/pstack/skills/reflect/SKILL.md
skills/cursor_plugins/pstack/skills/show-me-your-work/SKILL.md
skills/cursor_plugins/pstack/skills/tdd/SKILL.md
skills/cursor_plugins/pstack/skills/typescript-best-practices/SKILL.md
skills/cursor_plugins/pstack/skills/why/SKILL.md
skills/cursor_plugins/ralph-loop/skills/cancel-ralph/SKILL.md
skills/cursor_plugins/ralph-loop/skills/ralph-loop-help/SKILL.md
skills/cursor_plugins/ralph-loop/skills/ralph-loop/SKILL.md
skills/cursor_plugins/teaching/skills/create-learning-path/SKILL.md
skills/cursor_plugins/teaching/skills/run-learning-retrospective/SKILL.md
skills/cursor_plugins/thermos/skills/thermo-nuclear-code-quality-review/SKILL.md
skills/cursor_plugins/thermos/skills/thermo-nuclear-review/SKILL.md
skills/cursor_plugins/thermos/skills/thermos/SKILL.md
skills/expo_skills/add-app-clip/SKILL.md
skills/expo_skills/building-native-ui/SKILL.md
skills/expo_skills/eas-update-insights/SKILL.md
skills/expo_skills/expo-api-routes/SKILL.md
skills/expo_skills/expo-brownfield/SKILL.md
skills/expo_skills/expo-cicd-workflows/SKILL.md
skills/expo_skills/expo-deployment/SKILL.md
skills/expo_skills/expo-dev-client/SKILL.md
skills/expo_skills/expo-module/SKILL.md
skills/expo_skills/expo-tailwind-setup/SKILL.md
skills/expo_skills/expo-ui-jetpack-compose/SKILL.md
skills/expo_skills/expo-ui-swift-ui/SKILL.md
skills/expo_skills/native-data-fetching/SKILL.md
skills/expo_skills/upgrading-expo/SKILL.md
skills/expo_skills/use-dom/SKILL.md
skills/firecrawl_skills/firecrawl-build-interact/SKILL.md
skills/firecrawl_skills/firecrawl-build-onboarding/SKILL.md
skills/firecrawl_skills/firecrawl-build-scrape/SKILL.md
skills/firecrawl_skills/firecrawl-build-search/SKILL.md
skills/huggingface_skills/huggingface-community-evals/SKILL.md
skills/huggingface_skills/huggingface-datasets/SKILL.md
skills/huggingface_skills/huggingface-local-models/SKILL.md
skills/huggingface_skills/huggingface-paper-publisher/SKILL.md
skills/huggingface_skills/huggingface-papers/SKILL.md
skills/huggingface_skills/huggingface-tool-builder/SKILL.md
skills/huggingface_skills/huggingface-trackio/SKILL.md
skills/huggingface_skills/transformers-js/SKILL.md
skills/kostja94_marketing-skills/404/SKILL.md
skills/kostja94_marketing-skills/about/SKILL.md
skills/kostja94_marketing-skills/affiliate-marketing/SKILL.md
skills/kostja94_marketing-skills/affiliate-program/SKILL.md
skills/kostja94_marketing-skills/ai-traffic/SKILL.md
skills/kostja94_marketing-skills/alternatives/SKILL.md
skills/kostja94_marketing-skills/api/SKILL.md
skills/kostja94_marketing-skills/app-ads/SKILL.md
skills/kostja94_marketing-skills/article/SKILL.md
skills/kostja94_marketing-skills/backlink-analysis/SKILL.md
skills/kostja94_marketing-skills/blog/SKILL.md
skills/kostja94_marketing-skills/brand-monitoring/SKILL.md
skills/kostja94_marketing-skills/brand-protection/SKILL.md
skills/kostja94_marketing-skills/breadcrumb/SKILL.md
skills/kostja94_marketing-skills/canonical/SKILL.md
skills/kostja94_marketing-skills/card/SKILL.md
skills/kostja94_marketing-skills/careers/SKILL.md
skills/kostja94_marketing-skills/carousel/SKILL.md
skills/kostja94_marketing-skills/category-pages/SKILL.md
skills/kostja94_marketing-skills/changelog/SKILL.md
skills/kostja94_marketing-skills/community-forum/SKILL.md
skills/kostja94_marketing-skills/competitor-research/SKILL.md
skills/kostja94_marketing-skills/contact/SKILL.md
skills/kostja94_marketing-skills/content-marketing/SKILL.md
skills/kostja94_marketing-skills/content-optimization/SKILL.md
skills/kostja94_marketing-skills/content-strategy/SKILL.md
skills/kostja94_marketing-skills/contest/SKILL.md
skills/kostja94_marketing-skills/conversion/SKILL.md
skills/kostja94_marketing-skills/cookie-policy/SKILL.md
skills/kostja94_marketing-skills/copywriting/SKILL.md
skills/kostja94_marketing-skills/core-web-vitals/SKILL.md
skills/kostja94_marketing-skills/crawlability/SKILL.md
skills/kostja94_marketing-skills/creator-program/SKILL.md
skills/kostja94_marketing-skills/cta/SKILL.md
skills/kostja94_marketing-skills/ctv-ads/SKILL.md
skills/kostja94_marketing-skills/customer-stories/SKILL.md
skills/kostja94_marketing-skills/description/SKILL.md
skills/kostja94_marketing-skills/directory-listing-ads/SKILL.md
skills/kostja94_marketing-skills/disclosure/SKILL.md
skills/kostja94_marketing-skills/discount-marketing/SKILL.md
skills/kostja94_marketing-skills/display-ads/SKILL.md
skills/kostja94_marketing-skills/distribution-channels/SKILL.md
skills/kostja94_marketing-skills/docs/SKILL.md
skills/kostja94_marketing-skills/domain-architecture/SKILL.md
skills/kostja94_marketing-skills/domain-selection/SKILL.md
skills/kostja94_marketing-skills/download/SKILL.md
skills/kostja94_marketing-skills/education-program/SKILL.md
skills/kostja94_marketing-skills/eeat-signals/SKILL.md
skills/kostja94_marketing-skills/email-marketing/SKILL.md
skills/kostja94_marketing-skills/employee-generated-content/SKILL.md
skills/kostja94_marketing-skills/entity-seo/SKILL.md
skills/kostja94_marketing-skills/faq/SKILL.md
skills/kostja94_marketing-skills/favicon/SKILL.md
skills/kostja94_marketing-skills/featured-snippet/SKILL.md
skills/kostja94_marketing-skills/features/SKILL.md
skills/kostja94_marketing-skills/feedback/SKILL.md
skills/kostja94_marketing-skills/footer/SKILL.md
skills/kostja94_marketing-skills/glossary/SKILL.md
skills/kostja94_marketing-skills/google-ads/SKILL.md
skills/kostja94_marketing-skills/grid/SKILL.md
skills/kostja94_marketing-skills/grokipedia/SKILL.md
skills/kostja94_marketing-skills/growth-funnel/SKILL.md
skills/kostja94_marketing-skills/gtm/SKILL.md
skills/kostja94_marketing-skills/heading/SKILL.md
skills/kostja94_marketing-skills/hero/SKILL.md
skills/kostja94_marketing-skills/home/SKILL.md
skills/kostja94_marketing-skills/image-optimization/SKILL.md
skills/kostja94_marketing-skills/indexing/SKILL.md
skills/kostja94_marketing-skills/indexnow/SKILL.md
skills/kostja94_marketing-skills/indie-hacker/SKILL.md
skills/kostja94_marketing-skills/influencer-marketing/SKILL.md
skills/kostja94_marketing-skills/integrated-marketing/SKILL.md
skills/kostja94_marketing-skills/integrations/SKILL.md
skills/kostja94_marketing-skills/internal-links/SKILL.md
skills/kostja94_marketing-skills/keyword-research/SKILL.md
skills/kostja94_marketing-skills/landing-page/SKILL.md
skills/kostja94_marketing-skills/legal/SKILL.md
skills/kostja94_marketing-skills/link-building/SKILL.md
skills/kostja94_marketing-skills/linkedin-ads/SKILL.md
skills/kostja94_marketing-skills/linkedin/SKILL.md
skills/kostja94_marketing-skills/list/SKILL.md
skills/kostja94_marketing-skills/local/SKILL.md
skills/kostja94_marketing-skills/localization/SKILL.md
skills/kostja94_marketing-skills/logo/SKILL.md
skills/kostja94_marketing-skills/masonry/SKILL.md
skills/kostja94_marketing-skills/media-kit/SKILL.md
skills/kostja94_marketing-skills/medium/SKILL.md
skills/kostja94_marketing-skills/meta-ads/SKILL.md
skills/kostja94_marketing-skills/metadata/SKILL.md
skills/kostja94_marketing-skills/migration/SKILL.md
skills/kostja94_marketing-skills/mobile-friendly/SKILL.md
skills/kostja94_marketing-skills/multi-domain-brand-seo/SKILL.md
skills/kostja94_marketing-skills/native-ads/SKILL.md
skills/kostja94_marketing-skills/navigation-menu/SKILL.md
skills/kostja94_marketing-skills/newsletter-signup/SKILL.md
skills/kostja94_marketing-skills/open-graph/SKILL.md
skills/kostja94_marketing-skills/open-source/SKILL.md
skills/kostja94_marketing-skills/pinterest/SKILL.md
skills/kostja94_marketing-skills/pmf/SKILL.md
skills/kostja94_marketing-skills/podcast/SKILL.md
skills/kostja94_marketing-skills/popup/SKILL.md
skills/kostja94_marketing-skills/press-coverage/SKILL.md
skills/kostja94_marketing-skills/pricing-strategy/SKILL.md
skills/kostja94_marketing-skills/pricing/SKILL.md
skills/kostja94_marketing-skills/privacy/SKILL.md
skills/kostja94_marketing-skills/product-hunt-launch/SKILL.md
skills/kostja94_marketing-skills/product-launch/SKILL.md
skills/kostja94_marketing-skills/products/SKILL.md
skills/kostja94_marketing-skills/public-relations/SKILL.md
skills/kostja94_marketing-skills/rebranding/SKILL.md
skills/kostja94_marketing-skills/reddit-ads/SKILL.md
skills/kostja94_marketing-skills/reddit/SKILL.md
skills/kostja94_marketing-skills/referral-program/SKILL.md
skills/kostja94_marketing-skills/refund/SKILL.md
skills/kostja94_marketing-skills/rendering-strategies/SKILL.md
skills/kostja94_marketing-skills/research-sources/SKILL.md
skills/kostja94_marketing-skills/resources/SKILL.md
skills/kostja94_marketing-skills/retention/SKILL.md
skills/kostja94_marketing-skills/robots/SKILL.md
skills/kostja94_marketing-skills/seo-audit/SKILL.md
skills/kostja94_marketing-skills/seo-monitoring/SKILL.md
skills/kostja94_marketing-skills/seo/SKILL.md
skills/kostja94_marketing-skills/serp-features/SKILL.md
skills/kostja94_marketing-skills/services/SKILL.md
skills/kostja94_marketing-skills/shipping/SKILL.md
skills/kostja94_marketing-skills/showcase/SKILL.md
skills/kostja94_marketing-skills/sidebar/SKILL.md
skills/kostja94_marketing-skills/signup-login/SKILL.md
skills/kostja94_marketing-skills/sitemap/SKILL.md
skills/kostja94_marketing-skills/social-share/SKILL.md
skills/kostja94_marketing-skills/solutions/SKILL.md
skills/kostja94_marketing-skills/startups/SKILL.md
skills/kostja94_marketing-skills/status/SKILL.md
skills/kostja94_marketing-skills/tab-accordion/SKILL.md
skills/kostja94_marketing-skills/template-page/SKILL.md
skills/kostja94_marketing-skills/terms/SKILL.md
skills/kostja94_marketing-skills/testimonials/SKILL.md
skills/kostja94_marketing-skills/tiktok-ads/SKILL.md
skills/kostja94_marketing-skills/tiktok/SKILL.md
skills/kostja94_marketing-skills/title/SKILL.md
skills/kostja94_marketing-skills/toc/SKILL.md
skills/kostja94_marketing-skills/tools/SKILL.md
skills/kostja94_marketing-skills/top-banner/SKILL.md
skills/kostja94_marketing-skills/tracking/SKILL.md
skills/kostja94_marketing-skills/traffic/SKILL.md
skills/kostja94_marketing-skills/translation/SKILL.md
skills/kostja94_marketing-skills/trust-badges/SKILL.md
skills/kostja94_marketing-skills/twitter-cards/SKILL.md
skills/kostja94_marketing-skills/url-slug/SKILL.md
skills/kostja94_marketing-skills/url-structure/SKILL.md
skills/kostja94_marketing-skills/use-cases/SKILL.md
skills/kostja94_marketing-skills/video-optimization/SKILL.md
skills/kostja94_marketing-skills/video/SKILL.md
skills/kostja94_marketing-skills/visual-content/SKILL.md
skills/kostja94_marketing-skills/website-structure/SKILL.md
skills/kostja94_marketing-skills/x/SKILL.md
skills/kostja94_marketing-skills/youtube-ads/SKILL.md
skills/kostja94_marketing-skills/youtube/SKILL.md
skills/search_orchestration/SKILL.md
skills/taste-skill/skills/brandkit/SKILL.md
skills/taste-skill/skills/brutalist-skill/SKILL.md
skills/taste-skill/skills/gpt-tasteskill/SKILL.md
skills/taste-skill/skills/minimalist-skill/SKILL.md
skills/taste-skill/skills/output-skill/SKILL.md
skills/taste-skill/skills/redesign-skill/SKILL.md
skills/taste-skill/skills/soft-skill/SKILL.md
skills/taste-skill/skills/stitch-skill/SKILL.md
skills/taste-skill/skills/taste-skill-v1/SKILL.md
skills/taste-skill/skills/taste-skill/SKILL.md
skills/veniceai_skills/venice-api-keys/SKILL.md
skills/veniceai_skills/venice-api-overview/SKILL.md
skills/veniceai_skills/venice-audio-music/SKILL.md
skills/veniceai_skills/venice-audio-speech/SKILL.md
skills/veniceai_skills/venice-audio-transcription/SKILL.md
skills/veniceai_skills/venice-augment/SKILL.md
skills/veniceai_skills/venice-auth/SKILL.md
skills/veniceai_skills/venice-billing/SKILL.md
skills/veniceai_skills/venice-characters/SKILL.md
skills/veniceai_skills/venice-chat/SKILL.md
skills/veniceai_skills/venice-crypto-rpc/SKILL.md
skills/veniceai_skills/venice-embeddings/SKILL.md
skills/veniceai_skills/venice-errors/SKILL.md
skills/veniceai_skills/venice-image-edit/SKILL.md
skills/veniceai_skills/venice-image-generate/SKILL.md
skills/veniceai_skills/venice-models/SKILL.md
skills/veniceai_skills/venice-responses/SKILL.md
skills/veniceai_skills/venice-video/SKILL.md
skills/veniceai_skills/venice-x402/SKILL.md
skills/anthropics_skills/claude-api/SKILL.md
skills/anthropics_skills/docx/SKILL.md
skills/anthropics_skills/pptx/SKILL.md
skills/anthropics_skills/xlsx/SKILL.md
skills/browser-use_browser-use/cloud/SKILL.md
skills/browser-use_browser-use/open-source/SKILL.md
skills/cloudflare_skills/cloudflare-email-service/SKILL.md
skills/cursor_plugins/cursor-sdk/skills/cursor-sdk/SKILL.md
skills/cursor_plugins/pstack/skills/unslop/SKILL.md
skills/expo_skills/expo-observe/SKILL.md
skills/huggingface_skills/hf-cli/SKILL.md
skills/huggingface_skills/huggingface-best/SKILL.md
skills/huggingface_skills/huggingface-llm-trainer/SKILL.md
skills/huggingface_skills/huggingface-vision-trainer/SKILL.md
skills/huggingface_skills/huggingface-zerogpu/SKILL.md
skills/huggingface_skills/train-sentence-transformers/SKILL.md
skills/kostja94_marketing-skills/brand-visual/SKILL.md
skills/kostja94_marketing-skills/branding/SKILL.md
skills/kostja94_marketing-skills/cold-start/SKILL.md
skills/kostja94_marketing-skills/comparison-table/SKILL.md
skills/kostja94_marketing-skills/directory-submission/SKILL.md
skills/kostja94_marketing-skills/geo/SKILL.md
skills/kostja94_marketing-skills/github/SKILL.md
skills/kostja94_marketing-skills/google-search-console/SKILL.md
skills/kostja94_marketing-skills/howto-section/SKILL.md
skills/kostja94_marketing-skills/paid-ads/SKILL.md
skills/kostja94_marketing-skills/parasite-seo/SKILL.md
skills/kostja94_marketing-skills/programmatic-seo/SKILL.md
skills/kostja94_marketing-skills/schema/SKILL.md
skills/taste-skill/skills/image-to-code-skill/SKILL.md
skills/taste-skill/skills/imagegen-frontend-mobile/SKILL.md
skills/taste-skill/skills/imagegen-frontend-web/SKILL.md
skills/vercel-labs_skills/find-skills/SKILL.md

Metadata

Files
0
Version
c9d8953
Hash
ce41c656
Indexed
2026-07-05 19:55

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-09 00:47
浙ICP备14020137号-1 $bản đồ khách truy cập$