# makepad-2.0-events

Скилл makepad-2.0-events помогает агенту разбираться с событиями и действиями в Makepad 2.0: от on_click в Splash до трейта MatchEvent в Rust.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · ★ 751
- Автор: ZhangHanDong
- Лицензия: не указана · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/ZhangHanDong/makepad-skills/tree/HEAD/skills/makepad-2.0-events/SKILL.md
- Обновлён: 2026-04-07
- HTML: https://affpapa.org/nevibecode/skills/makepad-20-events

## Что делает

Makepad 2.0 делит обработку событий на два слоя. В Splash-коде `script_mod!` обработчики пишут прямо у виджетов: `on_click`, `on_render`, `on_return`, `on_startup`. Они закрывают простую интерактивность — нажатие кнопки, ввод текста, перерисовку списка. Второй слой — Rust, трейт `MatchEvent` с методами `handle_actions`, `handle_timer`, `handle_http_response` и другими. Туда уходит бизнес-логика, сеть, всё, что требует полной силы Rust.

Слои связаны двумя макросами. `script_eval!(cx, { ... })` выполняет Splash-код из Rust — обновить состояние, вызвать рендер. `script_apply_eval!(cx, widget_ref, { ... })` меняет свойства виджета на ходу. Скилл описывает оба макроса и показывает, где какой уместен.

Внутри Splash обработчики используют синтаксис замыканий: `||` без аргументов, `|checked|` когда нужно значение. CheckBox передаёт новое состояние, TextInput ловит Enter через `on_return`. `on_render` сам не срабатывает — его вызывает `ui.widget_name.render()`, а свойство `new_batch: true` очищает предыдущую отрисовку перед новой. Вот на этом чаще всего и спотыкаются.

Rust-часть перечисляет методы трейта по группам: жизненный цикл (`handle_startup`, `handle_shutdown`, `handle_pause`, `handle_resume`), фокус окна, кадры, действия виджетов, клавиши, таймеры, отрисовка, HTTP-ответы и прогресс, сигналы, аудиоустройства, MIDI-порты, видеовходы. `handle_actions` по умолчанию проходит по всем действиям и зовёт `handle_action` для каждого.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ZhangHanDong/makepad-skills --skill makepad-2.0-events -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/makepad-2.0-events/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/makepad-2.0-events/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ZhangHanDong/makepad-skills --skill makepad-2.0-events -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/makepad-2.0-events/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ZhangHanDong/makepad-skills --skill makepad-2.0-events -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/makepad-2.0-events/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install ZhangHanDong/makepad-skills makepad-2.0-events
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/makepad-2.0-events/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ZhangHanDong/makepad-skills --skill makepad-2.0-events -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/ZhangHanDong/makepad-skills --path skills/makepad-2.0-events
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/makepad-2.0-events/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add ZhangHanDong/makepad-skills --skill makepad-2.0-events -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/ZhangHanDong/makepad-skills/tree/HEAD/skills/makepad-2.0-events/SKILL.md

## Когда брать
- Связать нажатие кнопки с изменением состояния в Splash-коде
- Перерисовать список после добавления или удаления элемента
- Поймать Enter в TextInput и отправить форму
- Развести логику по слоям: Splash для UI, Rust для сети и таймеров
- Вызвать Splash-код из Rust через `script_eval!` и обновить свойства виджета

## Примеры запросов агенту
- Добавь обработчик `on_click` на кнопку добавления задачи и очисти поле ввода после нажатия
- Сделай так, чтобы список перерисовывался после удаления элемента через `on_render`
- Обработай HTTP-ответ в Rust через `handle_http_response` и обнови интерфейс

## Похожие
- [pixijs-events](https://affpapa.org/nevibecode/skills/pixijs-events.md) — скилл · 5900 установок
- [pcf-events](https://affpapa.org/nevibecode/rules/pcf-events.md) — правило · ★ 40451
- [gws-events](https://affpapa.org/nevibecode/skills/gws-events.md) — скилл · 31500 установок
- [gws-events-subscribe](https://affpapa.org/nevibecode/skills/gws-events-subscribe.md) — скилл · 30800 установок
- [inngest-events](https://affpapa.org/nevibecode/skills/inngest-events.md) — скилл · 3800 установок
- [vtex-io-events-and-workers](https://affpapa.org/nevibecode/skills/vtex-io-events-and-workers.md) — скилл · 1100 установок

Из того же набора: [zhanghandong/makepad-skills](https://affpapa.org/nevibecode/by/zhanghandong/makepad-skills.md) — 6 карточек

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
