nix-darwin/config/claude/skills/gpui-pro/SKILL.md
Build desktop GUI applications using GPUI (Zed's GPU-accelerated Rust UI framework) and gpui-component library. Use when user mentions GPUI, building desktop apps with Zed's framework, gpui-component, or wants to create GPU-rendered Rust UIs.
npx skillsauth add nubiv/my-nome gpui-proInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Minimal GPUI app with gpui-component:
use gpui::*;
use gpui_component::{button::*, *};
pub struct MyApp;
impl Render for MyApp {
fn render(&mut self, _: &mut Window, _: &mut Context<Self>) -> impl IntoElement {
div()
.v_flex()
.gap_2()
.size_full()
.items_center()
.justify_center()
.child("Hello, GPUI!")
.child(
Button::new("go")
.primary()
.label("Click Me")
.on_click(|_, _, _| println!("Clicked!")),
)
}
}
fn main() {
gpui_platform::application().run(move |cx| {
gpui_component::init(cx);
cx.spawn(async move |cx| {
cx.open_window(WindowOptions::default(), |window, cx| {
let view = cx.new(|_| MyApp);
cx.new(|cx| Root::new(view, window, cx).bg(cx.theme().background))
})
.expect("Failed to open window");
})
.detach();
});
}
GPUI has three layers:
Entity<T> handles. Created with cx.new(|cx| State { .. }).Render trait. Produce element trees each frame.div() + RenderOnce components.request_layout (compute size via Taffy) → prepaint (hitboxes, focus) → paint (GPU draw)
See REFERENCE.md for:
Root::new(view, window, cx)gpui_component::init(cx) before using any componentButton::new("id").primary().label("OK")div() is your flex container — Use .flex_row() / .flex_col() (or shorthand .h_flex() / .v_flex())cx.notify() to trigger re-renderRenderOnce for components — Stateless reusable components implement RenderOnce + #[derive(IntoElement)]Render for views — Stateful views implement Render trait on an entity structdevelopment
Manage devlogs (session journal entries) under the active repo's `.claude/devlogs/`. Subcommands - `write` creates a new date-stamped entry, `read` loads existing entries into context. Use when the user invokes `/devlog <subcommand>` or asks to write, save, recall, or load today's/recent devlogs.
development
Run MY_WIKI operations (ingest, query, research, lint). Use when the user wants to add sources to the wiki, ask questions against it, research new topics from the web, or audit its quality.
testing
Create and edit Obsidian Flavored Markdown with wikilinks, embeds, callouts, properties, and other Obsidian-specific syntax. Use when working with .md files in Obsidian, or when the user mentions wikilinks, callouts, frontmatter, tags, embeds, or Obsidian notes.
tools
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more. Also supports plugin and theme development with commands to reload plugins, run JavaScript, capture errors, take screenshots, and inspect the DOM. Use when the user asks to interact with their Obsidian vault, manage notes, search vault content, perform vault operations from the command line, or develop and debug Obsidian plugins and themes.