mirror of
https://github.com/sickn33/antigravity-awesome-skills.git
synced 2026-04-25 17:25:12 +02:00
* fix: stabilize validation and tests on Windows * test: add Windows smoke coverage for skill activation * refactor: make setup_web script CommonJS * fix: repair aegisops-ai frontmatter * docs: add when-to-use guidance to core skills * docs: add when-to-use guidance to Apify skills * docs: add when-to-use guidance to Google and Expo skills * docs: add when-to-use guidance to Makepad skills * docs: add when-to-use guidance to git workflow skills * docs: add when-to-use guidance to fp-ts skills * docs: add when-to-use guidance to Three.js skills * docs: add when-to-use guidance to n8n skills * docs: add when-to-use guidance to health analysis skills * docs: add when-to-use guidance to writing and review skills * meta: sync generated catalog metadata * docs: add when-to-use guidance to Robius skills * docs: add when-to-use guidance to review and workflow skills * docs: add when-to-use guidance to science and data skills * docs: add when-to-use guidance to tooling and automation skills * docs: add when-to-use guidance to remaining skills * fix: gate bundle helper execution in Windows activation * chore: drop generated artifacts from contributor PR * docs(maintenance): Record PR 457 sweep Document the open issue triage, PR supersedence decision, local verification, and source-only cleanup that prepared PR #457 for re-running CI. --------- Co-authored-by: sickn33 <sickn33@users.noreply.github.com>
161 lines
4.6 KiB
Markdown
161 lines
4.6 KiB
Markdown
---
|
|
name: makepad-basics
|
|
description: |
|
|
CRITICAL: Use for Makepad getting started and app structure. Triggers on:
|
|
makepad, makepad getting started, makepad tutorial, live_design!, app_main!,
|
|
makepad project setup, makepad hello world, "how to create makepad app",
|
|
makepad 入门, 创建 makepad 应用, makepad 教程, makepad 项目结构
|
|
risk: unknown
|
|
source: "https://github.com/makepad/makepad"
|
|
---
|
|
|
|
# Makepad Basics Skill
|
|
|
|
> **Version:** makepad-widgets (dev branch) | **Last Updated:** 2026-01-19
|
|
>
|
|
> Check for updates: https://crates.io/crates/makepad-widgets
|
|
|
|
You are an expert at the Rust `makepad-widgets` crate. Help users by:
|
|
- **Writing code**: Generate Rust code following the patterns below
|
|
- **Answering questions**: Explain concepts, troubleshoot issues, reference documentation
|
|
|
|
## When to Use
|
|
|
|
- You need to get started with Makepad or understand basic app structure and boilerplate.
|
|
- The task involves project setup, `live_design!`, `app_main!`, or first-screen application wiring.
|
|
- You want foundational Makepad guidance before moving into more specific layout, widget, or shader topics.
|
|
|
|
## Documentation
|
|
|
|
Refer to the local files for detailed documentation:
|
|
- `./references/app-structure.md` - Complete app boilerplate and structure
|
|
- `./references/event-handling.md` - Event handling patterns
|
|
|
|
## IMPORTANT: Documentation Completeness Check
|
|
|
|
**Before answering questions, Claude MUST:**
|
|
|
|
1. Read the relevant reference file(s) listed above
|
|
2. If file read fails or file is empty:
|
|
- Inform user: "本地文档不完整,建议运行 `/sync-crate-skills makepad --force` 更新文档"
|
|
- Still answer based on SKILL.md patterns + built-in knowledge
|
|
3. If reference file exists, incorporate its content into the answer
|
|
|
|
## Key Patterns
|
|
|
|
### 1. Basic App Structure
|
|
|
|
```rust
|
|
use makepad_widgets::*;
|
|
|
|
live_design! {
|
|
use link::theme::*;
|
|
use link::shaders::*;
|
|
use link::widgets::*;
|
|
|
|
App = {{App}} {
|
|
ui: <Root> {
|
|
main_window = <Window> {
|
|
body = <View> {
|
|
width: Fill, height: Fill
|
|
flow: Down
|
|
|
|
<Label> { text: "Hello Makepad!" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
app_main!(App);
|
|
|
|
#[derive(Live, LiveHook)]
|
|
pub struct App {
|
|
#[live] ui: WidgetRef,
|
|
}
|
|
|
|
impl LiveRegister for App {
|
|
fn live_register(cx: &mut Cx) {
|
|
crate::makepad_widgets::live_design(cx);
|
|
}
|
|
}
|
|
|
|
impl AppMain for App {
|
|
fn handle_event(&mut self, cx: &mut Cx, event: &Event) {
|
|
self.ui.handle_event(cx, event, &mut Scope::empty());
|
|
}
|
|
}
|
|
```
|
|
|
|
### 2. Cargo.toml Setup
|
|
|
|
```toml
|
|
[package]
|
|
name = "my_app"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
|
|
[dependencies]
|
|
makepad-widgets = { git = "https://github.com/makepad/makepad", branch = "dev" }
|
|
```
|
|
|
|
### 3. Handling Button Clicks
|
|
|
|
```rust
|
|
impl AppMain for App {
|
|
fn handle_event(&mut self, cx: &mut Cx, event: &Event) {
|
|
let actions = self.ui.handle_event(cx, event, &mut Scope::empty());
|
|
|
|
if self.ui.button(id!(my_button)).clicked(&actions) {
|
|
log!("Button clicked!");
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### 4. Accessing and Modifying Widgets
|
|
|
|
```rust
|
|
// Get widget references
|
|
let label = self.ui.label(id!(my_label));
|
|
label.set_text("Updated text");
|
|
|
|
let input = self.ui.text_input(id!(my_input));
|
|
let text = input.text();
|
|
```
|
|
|
|
## API Reference Table
|
|
|
|
| Macro/Type | Description | Example |
|
|
|------------|-------------|---------|
|
|
| `live_design!` | Defines UI in DSL | `live_design! { App = {{App}} { ... } }` |
|
|
| `app_main!` | Entry point macro | `app_main!(App);` |
|
|
| `#[derive(Live)]` | Derive live data | `#[derive(Live, LiveHook)]` |
|
|
| `WidgetRef` | Reference to UI tree | `#[live] ui: WidgetRef` |
|
|
| `Cx` | Context for rendering | `fn handle_event(&mut self, cx: &mut Cx, ...)` |
|
|
| `id!()` | Widget ID macro | `self.ui.button(id!(my_button))` |
|
|
|
|
## Platform Setup
|
|
|
|
| Platform | Requirements |
|
|
|----------|--------------|
|
|
| macOS | Works out of the box |
|
|
| Windows | Works out of the box |
|
|
| Linux | `apt-get install clang libaudio-dev libpulse-dev libx11-dev libxcursor-dev` |
|
|
| Web | `cargo install wasm-pack` |
|
|
|
|
## When Writing Code
|
|
|
|
1. Always include required imports: `use makepad_widgets::*;`
|
|
2. Use `live_design!` macro for all UI definitions
|
|
3. Implement `LiveRegister` and `AppMain` traits
|
|
4. Use `id!()` macro for widget references
|
|
5. Handle events through `handle_event` method
|
|
|
|
## When Answering Questions
|
|
|
|
1. Emphasize live design - changes in DSL reflect instantly without recompilation
|
|
2. Makepad is GPU-first - all rendering is shader-based
|
|
3. Cross-platform: same code runs on Android, iOS, Linux, macOS, Windows, Web
|
|
4. Recommend UI Zoo example for widget exploration
|