skill
gtk-rs-skills
Agent skills and reference docs for building modern GTK 4 + libadwaita apps in Rust with gtk-rs: development guide, project scaffolding and code review.
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/leinardi/gtk-rs-skills itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Nov 1, 2026gtk-rs skills
Agent skills and reference documentation for building modern GTK 4 + libadwaita applications in Rust with gtk-rs. Based on guidance from the official gtk-rs book and patterns from well-maintained GNOME Rust apps listed on gtk-rs.org (Fractal, Amberol, Authenticator, Shortwave, Pika Backup, Warp, Fragments, Identity, Video Trimmer, Mission Center, Podcasts, Helvum, Icon Library, Contrast, Solanum).
Tested against gtk4 0.11 / libadwaita 0.9 / glib 0.22 (GTK 4.22, libadwaita 1.9, GNOME 50), Rust edition 2024, Blueprint, Meson and Flatpak. New apps from the template require that baseline; in existing projects on older versions, the skills tell the agent to keep the project's versions and verify each API against them rather than upgrade unasked.
Skills
| Skill | Use it for |
|---|---|
gtk-rs-development | Any change to a gtk-rs app: rules that apply everywhere, plus 20 topic references loaded on demand. |
gtk-rs-new-app | Scaffolding a new app from a tested template (Meson, Cargo, Blueprint, GSettings, metainfo, Flatpak, CI). |
gtk-rs-review | Reviewing gtk-rs code or diffs for freezes, leaks, re-entrancy panics, outdated APIs and packaging mistakes. |
References (skills/gtk-rs-development/references/)
| Topic | File |
|---|---|
| App/window structure, module layout, data flow, errors, logging | architecture.md |
| Subclassing, properties, signals, enums/boxed, base classes | gobject.md |
clone!, weak refs, handler lifetimes, RefCell re-entrancy | closures-and-lifetimes.md |
| GSettings, window state, persistence | settings-and-state.md |
| Main loop, threads, tokio, channels, cancellation | async-and-threads.md |
| Portals, D-Bus, notifications, secrets, GStreamer | platform-integration.md |
| Cargo + Meson, config constants, GResource, Blueprint build, data files | project-layout-and-build.md |
| Flatpak, Flathub, CI, releases | packaging-and-ci.md |
| Tests, headless runs, inspector, warnings, leaks, profiling | testing-and-debugging.md |
| Blueprint and composite templates | templates-and-blueprint.md |
| Actions, menus, accelerators, shortcuts dialog | actions-and-shortcuts.md |
| List views, factories, models, filters and sorters | lists-and-models.md |
| Adaptive libadwaita UI, dialogs, preferences, toasts | libadwaita-ui.md |
| CSS, custom drawing, layout, animations | css-drawing-animation.md |
| Document apps: open, save, unsaved changes, quit, crash recovery | document-apps.md |
| TextView/TextBuffer, Unicode offsets, undo, search, GtkSourceView | text-editing.md |
| Clipboard, drag and drop, file drops | clipboard-and-dnd.md |
| Accessibility and internationalisation | accessibility-and-i18n.md |
| Compile errors keyed by error text | compile-traps.md |
| Deprecated APIs and their replacements | deprecated-apis.md |
The references are plain Markdown and work as human documentation too.
Installation
Claude Code (plugin)
/plugin marketplace add leinardi/gtk-rs-skills
/plugin install gtk-rs-skills@gtk-rs-skills
For a local checkout: /plugin marketplace add /path/to/gtk-rs-skills.
Claude Code (without the plugin system)
Copy or symlink the skill directories into ~/.claude/skills/ (all projects) or
<project>/.claude/skills/:
ln -s "$PWD/skills/gtk-rs-development" ~/.claude/skills/gtk-rs-development
ln -s "$PWD/skills/gtk-rs-new-app" ~/.claude/skills/gtk-rs-new-app
ln -s "$PWD/skills/gtk-rs-review" ~/.claude/skills/gtk-rs-review
Other agents
The skills follow the open Agent Skills layout (SKILL.md + resources). For agents that only read
AGENTS.md, see docs/AGENTS.md for a snippet that points them at the guide.
Scaffolding a new app
Ask your agent to "create a new GTK app called Notes", or run the generator yourself:
python3 -I skills/gtk-rs-new-app/scripts/new_app.py \
--app-id io.github.you.Notes --name Notes --dest ~/Projects/notes
cd ~/Projects/notes
meson setup _build -Dprofile=development && meson compile -C _build
meson devenv -C _build ./src/notes
The generated project passes cargo clippy -- -D warnings (pedantic) and meson test (desktop,
metainfo and schema validation), and runs without GTK warnings.
Development
See CONTRIBUTING.md and AGENTS.md. In short:
make pre-commit-install # pre-commit + commit-msg hooks
make check # every pre-commit hook on every file
make test # generator unit tests
make template-check # generate an app from the template, lint, build and test it
The guidance pins specific crate versions. When gtk4-rs/libadwaita release new versions, bump the
template (Cargo.toml features, meson.build checks, Flatpak runtime), the baseline line in
skills/gtk-rs-development/SKILL.md and deprecated-apis.md, re-verify the snippets, and run
make template-check. Releases are described in docs/release.md.
License
MIT, see LICENSE. Some material is adapted from third-party sources; see THIRD_PARTY_NOTICES.md.