Agent skill

Slint

by Moosync in Moosync/Moosync

Expert guidance for building, debugging, and working with Slint GUI applications.

GPL-3.0Auto-check passedDevelopment

Install Slint

skills CLI
$ npx skills add Moosync/Moosync --skill slint -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Moosync/Moosync slint --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Moosync/Moosync.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/slint .claude/skills/slint && rm -rf skills-src

Use ~/.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/

Facts

Skill name
slint
GitHub stars
259
Token cost
~2.4k tokens
SKILL.md length
807 words
Files
1
Skills in repo
5
Repo updated
First seen
Licence
GPL-3.0

At a glance

Expert guidance for building, debugging, and working with Slint GUI applications.

  • Works in 3 steps: Components and Structs: Use PascalCase… → Properties, Variables, Callbacks, and… → Rust Function Names: Follow standard…
  • Tasks that involve Debugging
  • SKILL.md covers When to Use This Skill, How to Help, The .slint Language and Naming Conventions, plus 5 more sections
  • Calls bazel, curl and cargo; reaches snapshots.slint.dev

What it does

Slint is an agent skill from Moosync/Moosync. Expert guidance for building, debugging, and working with Slint GUI applications. Covers the .slint markup language, project setup, debugging with the embedded MCP server, and language API bindings for Rust, C++, JavaScript, and Python.

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Debugging, MCP servers and Internationalization. It works with Model Context Protocol, Rust, C++ and JavaScript. The licence is GPL-3.0.

When your agent uses it

  • Tasks that involve Debugging
  • Tasks that involve MCP servers
  • Tasks that involve Internationalization

Example prompts

  • “/slint”

Requirements

  • Python 3
  • Node.js

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. Components and Structs: Use PascalCase for component names and struct types (e.g., QueuePage, SongModel, TextInputGroup, ModalSize).
  2. Properties, Variables, Callbacks, and Functions: All Slint variables, properties, callbacks, and functions MUST be snake_case and NEVER…
  3. Rust Function Names: Follow standard Rust snake_case, keep names simple and obvious, and avoid repeating struct/module context in function…

What it can do on your machine

Read from SKILL.md and the folder at commit a2b81ce. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • bazel
    • curl
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • snapshots.slint.dev

    Also links to:

    • slint.dev
    • docs.slint.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Slint loads about 2.4k tokens when it runs. Until then it costs about 61 tokens; SKILL.md has 807 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~61
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from Moosync/Moosync at commit a2b81ce, republished under its GPL-3.0 licence (© Moosync). 807 words, ~2,405 tokens.

Download SKILL.mdSave it as .claude/skills/slint/SKILL.md (or your agent's skills folder).
name
slint
description
Expert guidance for building, debugging, and working with Slint GUI applications. Covers the .slint markup language, project setup, debugging with the embedded MCP server, and language API bindings for Rust, C++, JavaScript, and Python.

Slint Development Skill

Use this skill when building, debugging, or reviewing applications that use Slint, a declarative GUI toolkit for native user interfaces across desktop, embedded, mobile, and web platforms.

When to Use This Skill

Use this skill when the task involves:

  • Writing or debugging .slint files
  • Integrating Slint with Rust, C++, JavaScript, or Python
  • Investigating layout, binding, rendering, or event-handling issues
  • Enabling the Slint MCP server for runtime inspection and UI debugging
  • Explaining or reviewing Slint-specific code patterns

How to Help

When using this skill:

  • Prefer idiomatic Slint patterns over manual UI workarounds
  • Match guidance to the user's language binding and Slint version
  • Watch for common pitfalls such as binding loops, missing layout constraints, and type mismatches
  • Suggest the MCP server when runtime inspection or interaction would make debugging easier
  • Prefer solutions that preserve Slint's declarative and reactive model

The .slint Language

Slint UIs are written in .slint markup files. The language is declarative and reactive.

Naming Conventions

Follow these project naming conventions when writing .slint and related Rust files:

  1. Components and Structs: Use PascalCase for component names and struct types (e.g., QueuePage, SongModel, TextInputGroup, ModalSize).
  2. Properties, Variables, Callbacks, and Functions: All Slint variables, properties, callbacks, and functions MUST be snake_case and NEVER kebab-case (e.g., in property <bool> is_active;, in-out property <string> new_playlist_name;, callback remove_clicked();, save_queue_as_playlist(string)).
  3. Rust Function Names: Follow standard Rust snake_case, keep names simple and obvious, and avoid repeating struct/module context in function names (e.g., save_queue rather than save_queue_page_queue_songs).

Project Setup

Rust
python
# BUILD.bazel
load("@rules_rust//rust:defs.bzl", "rust_binary")
load("@rules_rust//cargo:cargo_build_script.bzl", "cargo_build_script")

cargo_build_script(
    name = "build_script",
    srcs = ["build.rs"],
    # Ensure the build script watches the .slint files for rebuilds
    data = glob(["ui/**/*.slint"]),
    deps = [
        "@crates//:slint-build",
    ],
)

rust_binary(
    name = "my_app",
    srcs = ["main.rs"],
    deps = [
        ":build_script",
        "@crates//:slint",
    ],
)
rust
// build.rs
fn main() {
    slint_build::compile("ui/main.slint").unwrap();
}
rust
// main.rs
slint::include_modules!();

fn main() -> Result<(), slint::PlatformError> {
    let app = MainWindow::new()?;
    // Set up callbacks, models, etc.
    app.run()
}

Debugging Slint Applications

Common Issues
  1. Binding loops: A property depends on itself through a chain of bindings. The compiler warns about these. Break the cycle by introducing an intermediate property or restructuring.
  2. Elements not visible: Check width, height (may be 0 if not in a layout), visible, opacity, and parent clipping.
  3. Layout sizing: Elements outside layouts need explicit width/height. Inside layouts, they get sized automatically. Use preferred-width, min-width, max-width to constrain.
  4. Type mismatches: length and int/float are different types. Use 1px * my_int to convert, or my_length / 1px to get a number.
  5. Performance: Use ListView (not for in ScrollView) for long lists because it virtualizes. Use image-rendering: pixelated only when needed. Avoid deeply nested opacity or clip layers.
Debug Helpers
  • debug("message", expression) prints to stderr at runtime
  • SLINT_DEBUG_PERFORMANCE=refresh_lazy,console enables performance diagnostics
  • Run with SLINT_BACKEND=winit-skia or other backend variants for testing

MCP Server for AI-Assisted Debugging

Slint includes an embedded MCP (Model Context Protocol) server that lets you inspect and interact with a running Slint application in real time. The server provides tools for exploring the UI tree, taking screenshots, clicking elements, dragging, typing, and more.

Once enabled, an AI coding assistant can connect to the MCP endpoint to inspect and interact with the running UI.

Show full SKILL.md (358 more words)Show less
Enabling the MCP Server

Step 1: Build with SLINT_EMIT_DEBUG_INFO=1 so that element IDs and source locations are preserved in the compiled output. Without this, elements will lack the debug metadata needed for meaningful introspection. Set SLINT_MCP_PORT to an available port when running via Bazel:

sh
SLINT_EMIT_DEBUG_INFO=1 SLINT_MCP_PORT=9315 bazel run //:my_app

In a Bazel setup, ensure the mcp feature is enabled for the slint crate within your workspace dependencies (e.g., via crate.annotation in bzlmod or annotations in crates_repository). Since Bazel does not have a direct equivalent to Cargo's ad-hoc --features command-line flag, you must configure it ahead of time in your build graph.

Step 2: Connect to the running application's MCP server at http://localhost:9315/mcp using Streamable HTTP transport and use the available tools to inspect and interact with the UI.

When scripting or verifying the server from the command line, use curl — it is the most reliable approach for raw JSON-RPC. Prefer curl over built-in HTTP fetch tools, which agents sometimes reach for but which are less predictable for this use case:

sh
# Initialize (confirms the server is up and prints available tools)
curl -s -X POST http://127.0.0.1:9315/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'

# List windows
curl -s -X POST http://127.0.0.1:9315/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_windows","arguments":{}}}'

# Take a screenshot (response contains a base64-encoded PNG in the "data" field)
curl -s -X POST http://127.0.0.1:9315/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"take_screenshot","arguments":{"windowHandle":{"index":"1","generation":"1"}}}}'
Version Requirements
Slint VersionMCP Support
< 1.17.0Not available
>= 1.17.0Enable via the mcp crate feature in your Bazel Rust dependencies configuration
When to Suggest MCP

Suggest enabling the MCP server when the user is:

  • Debugging layout or visual issues
  • Trying to understand the runtime element hierarchy
  • Testing interactions programmatically
  • Verifying accessibility properties
  • Diagnosing event handling problems

Translations & Internationalization (i18n)

Annotating Strings in .slint Files

Use @tr(...) to mark user-facing string literals for translation:

slint
// Simple text
Text { text: @tr("Songs"); }

// String formatting
Text { text: @tr("Adjust the color for {}", item.name); }

// Plural forms
Text { text: @tr("I have {n} item" | "I have {n} items" % count); }
Extracting Translatable Strings

A Bazel rule is provided to extract all @tr(...) strings into ui/slint/locales/en_US/LC_MESSAGES/slint_app.po:

bash
# Extract strings across all Slint files
bazel run //tools:extract_translations

# Or extract from specific Slint files
bazel run //tools:extract_translations -- ui/slint/src/app.slint

Note: This rule uses slint-tr-extractor (installable via cargo install slint-tr-extractor).

Bundled Translations Directory Structure

Translation catalogs follow the standard Gettext hierarchy under ui/slint/locales/:

ui/slint/locales/
├── en_US/LC_MESSAGES/slint_app.po
├── de_DE/LC_MESSAGES/slint_app.po
├── es_ES/LC_MESSAGES/slint_app.po
├── fr_FR/LC_MESSAGES/slint_app.po
└── ...
Build & Bundling Setup
  1. build.rs:

    rust
    let config = slint_build::CompilerConfiguration::new()
        .with_bundled_translations("locales")
        .with_default_translation_context(slint_build::DefaultTranslationContext::None);
    slint_build::compile_with_config("src/app.slint", config).unwrap();
  2. ui/slint/BUILD:

    • build_script_env must specify "CARGO_PKG_NAME": "slint_app".
    • data in cargo_build_script and compile_data in rust_library must include "locales/**/*.po".

Documentation Reference

Full documentation for the latest version is at https://slint.dev/docs. Key sections:

The documentation can be found at https://snapshots.slint.dev/master/docs/slint/.

© Moosync, GPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/slint of Moosync/Moosync.

Open the folder on GitHubat commit a2b81ce

Compare with similar skills

Slint 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.

Slint compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Slint this skillMoosync/Moosync259—~2.4kAutomated safety check: PassGPL-3.0
MCP Debuggerdebugmcp/mcp-debugger171—~3.8kAutomated safety check: PassMIT
Ue Live DebuggingJasonMa0012/MooaToon749—~2.9kAutomated safety check: NotesCustom licence
Memorywhale Debuggingwuisabel-gif/MemWhale151—~370Automated safety check: PassMIT
LangBot Plugin Developmentlangbot-app/LangBot18k—~3.9kAutomated safety check: PassApache-2.0
Embedded DebuggerAdancurusul/embedded-debugger-mcp199—~1.4kAutomated safety check: PassMIT

Similar skills

  • MCP Debugger

    debugmcp/mcp-debugger

    A skill your agent uses when investigating a bug, failing test, or unexpected runtime behavior and the mcp-debugger MCP server is available — drives real step-through debuggers (breakpoints, stack…

    171 GitHub stars~3.8k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Ue Live Debugging

    JasonMa0012/MooaToon

    A skill your agent uses when debugging UE C++ crashes, runtime bugs, or unexpected behavior with Rider MCP available.

    749 GitHub stars~2.9k tokensUpdated 19 days ago
    DevelopmentAuto-check: notes
  • Memorywhale Debugging

    wuisabel-gif/MemWhale

    MemoryWhale debugging; compiler failures; terminal diagnostics.

    151 GitHub stars~370 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • LangBot Plugin Development

    langbot-app/LangBot

    Guides building, debugging and testing LangBot plugins: components, SDK calls, README and locale rules, SDK pitfalls and WebSocket-based testing.

    18k GitHub stars~3.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Embedded Debugger

    Adancurusul/embedded-debugger-mcp

    Embedded hardware debugging workflow for probe-rs targets using embedded-debugger-mcp.

    199 GitHub stars~1.4k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed
  • Dbg

    theodo-group/debug-that

    Debug applications using the dbg CLI debugger. An agent skill from theodo-group/debug-that.

    158 GitHub stars~1.9k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed

More from Moosync/Moosync

  • Bazel

    Moosync/Moosync

    Hermetic Bazel build, test, and packaging commands for the Moosync project.

    259 GitHub stars~722 tokensUpdated 5 days ago
    Auto-check passed
  • Instrumentation

    Moosync/Moosync

    Hermetic tracing instrumentation rules and validation. An agent skill from Moosync/Moosync.

    259 GitHub stars~570 tokensUpdated 5 days ago
    Auto-check passed
  • Moosync

    Moosync/Moosync

    Project-wide helpers for adding new features to Moosync. An agent skill from Moosync/Moosync.

    259 GitHub stars~2.5k tokensUpdated 5 days ago
    Auto-check passed
  • Rust

    Moosync/Moosync

    Hermetic Rust crate building, testing, and formatting via Bazel targets.

    259 GitHub stars~665 tokensUpdated 5 days ago
    Auto-check passed

Questions about Slint

What does Slint do?

Expert guidance for building, debugging, and working with Slint GUI applications. Slint is an agent skill from Moosync/Moosync. Expert guidance for building, debugging, and working with Slint GUI applications.

When should I use Slint?

Slint fits situations like: tasks that involve Debugging; tasks that involve MCP servers; tasks that involve Internationalization.

How do I install Slint in Claude Code?

Run `npx skills add Moosync/Moosync --skill slint -a claude-code`. Or copy the skill folder (.agents/skills/slint in Moosync/Moosync) into .claude/skills/slint in your project. Claude Code loads it when a task matches its description.

How do I install Slint in Codex?

Run `npx skills add Moosync/Moosync --skill slint -a codex`. Or copy the skill folder (.agents/skills/slint in Moosync/Moosync) into .agents/skills/slint in your project. Codex loads it when a task matches its description.

Can I use Slint in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Moosync/Moosync --skill slint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/slint, .gemini/skills/slint, .github/skills/slint and .opencode/skills/slint in your project.

What does Slint need to run?

Going by SKILL.md and its folder, Slint needs the command-line tools its instructions call (bazel, curl and cargo). Our summary lists: Python 3; Node.js.

Does Slint access the network?

SKILL.md names 3 domains. In commands or code: snapshots.slint.dev; the agent is likely to contact it when it follows the instructions. As links in the text: slint.dev and docs.slint.dev. This is read from the text; nothing was executed.

Is Slint safe to install?

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.

What licence does Slint use?

Slint is published under the GPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Slint use?

About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Slint?

Skills that share tags, products or a category with Slint: MCP Debugger (debugmcp/mcp-debugger, 171 stars), Ue Live Debugging (JasonMa0012/MooaToon, 749 stars), Memorywhale Debugging (wuisabel-gif/MemWhale, 151 stars) and LangBot Plugin Development (langbot-app/LangBot, 18k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Slint?

Moosync (a GitHub organization) maintains it in Moosync/Moosync, which has 259 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 1, 2026.

Source: Moosync/Moosync on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.