Add Claude Code plugin marketplace with Slint development skill#11370
Add Claude Code plugin marketplace with Slint development skill#11370
Conversation
| "name": "slint", | ||
| "description": "Enhances Claude's ability to work with, debug, and build Slint GUI applications", | ||
| "source": "./docs/skills", | ||
| "version": "0.1.0", |
There was a problem hiding this comment.
Should we not use the Slint version?
There was a problem hiding this comment.
Given that it’s not tied to a slint release, why? :) one argument that I can see is the automatic bump
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
Same thought here. My theory is that they ingest all the GitHub language grammars. Still, this provides more context especially when answering questions.
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.
| - `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`. |
There was a problem hiding this comment.
Is it worth having a prose description of each of these?
There was a problem hiding this comment.
I hope the names we chose are self-descriptive enough:)
|
|
||
| ### Binding Expressions and Reactivity | ||
|
|
||
| Every property assignment is a live binding. When dependencies change, expressions automatically re-evaluate. |
There was a problem hiding this comment.
I think it's probably worth expanding this section, since reactive programming is an unconventional programming paradigm.
There was a problem hiding this comment.
I don't think it's unconventional anymore - especially not given the vast training on web tech.
| ### Structs and Enums | ||
|
|
||
| ```slint no-test | ||
| export struct TodoItem { |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
|
|
||
| ### Models and Repeaters | ||
|
|
||
| Use `for item[index] in model :` to repeat elements. Models are typically `[ModelType]` arrays. |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
| if condition : Text { text: "Shown when true"; } | ||
| ``` | ||
|
|
||
| ### States and Transitions |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
Use the right single export keyword instead of compound "export component". Also emphasize the inheritance from Window.
|
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.
|
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. |
Enables
/plugin marketplace add slint-ui/slintto install a skill that enhances Claude's ability to work with Slint apps: language reference, project setup, debugging guidance, and MCP server usage.