Skip to content

Add Claude Code plugin marketplace with Slint development skill#11370

Merged
tronical merged 6 commits intomasterfrom
simon/skill
Apr 16, 2026
Merged

Add Claude Code plugin marketplace with Slint development skill#11370
tronical merged 6 commits intomasterfrom
simon/skill

Conversation

@tronical
Copy link
Copy Markdown
Member

Enables /plugin marketplace add slint-ui/slint to install a skill that enhances Claude's ability to work with Slint apps: language reference, project setup, debugging guidance, and MCP server usage.

Comment thread docs/skills/slint/SKILL.md Outdated
"name": "slint",
"description": "Enhances Claude's ability to work with, debug, and build Slint GUI applications",
"source": "./docs/skills",
"version": "0.1.0",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we not use the Slint version?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that it’s not tied to a slint release, why? :) one argument that I can see is the automatic bump

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it not tied to a release? Since the protocol is not stable, this is only for the release 1.16. The i-slint-backend-test version number should change or we might not even need i-slint-backend-test later.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it not tied to a release?

Nope. If I run /plugin marketplace add slint-ui/slint then it's fetching from the slint-ui/slint repo - that's it.

The way I'd like to handle versioning is in the skill markdown file itself, with a table. I've already done that partly by saying that the MCP support requires Slint >= 1.16. If we change it entirely in 1.17 then we change the markdown to say that with 1.17 it's activated with mechanism XYZ.

Since the protocol is not stable

Fortunately the protocol doesn't have to be stable in the MCP case. My main concern is how to activate the entire mechanism.


You are an expert at building applications with [Slint](https://slint.dev), a declarative GUI toolkit for native user interfaces across desktop, embedded, mobile, and web platforms.

## The .slint Language
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder how useful this section is. I have the feeling models already knows Slint basics very well. (They do some mistake, like invent properties, but they seem to know the basics)

I wonder if we could somehow benchmark that

Maybe asking the model to perform a few tasks. And we try the same tasks without or with different skill files. And compare the results and the amount of token used.

Of course this doesn't need to be done for the first version of this PR. I was just thinking out loud.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same thought here. My theory is that they ingest all the GitHub language grammars. Still, this provides more context especially when answering questions.

Comment thread docs/skills/slint/SKILL.md Outdated
Comment thread docs/skills/slint/SKILL.md Outdated
Enables `/plugin marketplace add slint-ui/slint` to install a skill
that enhances Claude's ability to work with Slint apps: language
reference, project setup, debugging guidance, and MCP server usage.
Comment thread docs/skills/slint/SKILL.md Outdated
Comment thread docs/skills/slint/SKILL.md Outdated
- `in-out property <type> name;` - read/write from both sides
- `private property <type> name;` - internal only (default if no qualifier)

Primitive types: `int`, `float`, `string`, `bool`, `length`, `physical-length`, `duration`, `angle`, `color`, `brush`, `image`, `percent`.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth having a prose description of each of these?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I hope the names we chose are self-descriptive enough:)

Comment thread docs/skills/slint/SKILL.md Outdated
Comment thread docs/skills/slint/SKILL.md Outdated

### Binding Expressions and Reactivity

Every property assignment is a live binding. When dependencies change, expressions automatically re-evaluate.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it's probably worth expanding this section, since reactive programming is an unconventional programming paradigm.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's unconventional anymore - especially not given the vast training on web tech.

Comment thread docs/skills/slint/SKILL.md Outdated
### Structs and Enums

```slint no-test
export struct TodoItem {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth explaining that structs can have other structs as fields, what the difference is between a struct and a component, and that structs don't need to be exported? I think enums are probably going to be easy enough for it to understand, but that's not necessarily true of structs.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we may need to straight balance here between this becoming a full language reference or it just being a skill. Since the export defaults to exporting it, I'd say we leave it for now - unless we find evidence that this causes problems.

Comment thread docs/skills/slint/SKILL.md Outdated

### Models and Repeaters

Use `for item[index] in model :` to repeat elements. Models are typically `[ModelType]` arrays.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this gives enough information about how arrays work, and introduces an unnecessary [ModelType] term which the AI may have trouble tokenising when it isn't necessary in the sentence.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I disagree. The first sentences introduces the term model. The second elaborates that models are arrays, and ModelType teaches that this refers to the type that's inside the model. Honestly, I think this is as brief as it gets and unless there's evidence that this really isn't understood, I'd prefer to keep it brief.

My experience so far with codex and claude is that both - even without the skill - seem perfectly capable of producing models and repeated elements already out of the box. As mentioned before, I suspect that that's partly due to the fact that our grammar is taught via the GitHub linguist.

Comment thread docs/skills/slint/SKILL.md Outdated
if condition : Text { text: "Shown when true"; }
```

### States and Transitions
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This definitely needs to be expanded. Explaining what the elements of the block do (i.e. set parameters), the constraints on in/out/in-out animations, that you can have multiple states, when you might want to use a state, etc

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd rather we keep it at a trivial example and hope the llm will fall back to the full documentation.

Note: I also plan to add lsp support, so that'll provide additional diagnostics in real world use.

Comment thread docs/skills/slint/SKILL.md Outdated
Use the right single export keyword instead of compound "export component". Also emphasize the inheritance from Window.
@tronical
Copy link
Copy Markdown
Member Author

I discussed a bit further with Olivier. I'll remove all the language bits from the Skill. Best to teach it rather where to find the docs for now. Also keeps the skill small.

Remove all the bits about the language and just emphasize how to get to the docs.
@tronical
Copy link
Copy Markdown
Member Author

So this version thing works. In an unrelated claude instance I asked where to find the docs for 1.13.1 and it guessed. with this installed it gave the correct url in one shot and said that it got it from the skill.

@tronical tronical enabled auto-merge (squash) April 16, 2026 07:15
@tronical tronical disabled auto-merge April 16, 2026 07:16
@tronical tronical merged commit 77dfb96 into master Apr 16, 2026
38 checks passed
@tronical tronical deleted the simon/skill branch April 16, 2026 07:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants