PromptUGUI — скилл

PromptUGUI дает агентам краткий язык описания интерфейсов Unity в XML и набор навыков, чтобы они верстали uGUI из текста.

  • 93 ★ репозитория
  • Последний коммит
  • Apache-2.0
Скилл

Расширенный доступ

Почему такой уровень

  • Агент создает и правит файлы интерфейса, спрайты и код C# в проекте Unity.
  • Установка подтягивает пакеты из git и NuGet, а автоперевод шлет тексты внешней модели.
Все причины и проверки

heerozh/promptugui

Установка

Работает в

В терминале, через SkillFoxx CLI

npx skillfoxx add skills/promptugui

Определит агенты на машине, покажет уровень доступа и зафиксирует версию.

Другие способы установки

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Агент создает и правит файлы интерфейса, спрайты и код C# в проекте Unity.
  • Установка подтягивает пакеты из git и NuGet, а автоперевод шлет тексты внешней модели.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

PromptUGUI — UI-фреймворк для Unity 2022.3 и новее, включая Unity 6, рассчитанный на кодовых агентов. Интерфейс описывается в файлах `.ui.xml`, спрайты в текстовом формате `.pxl` в духе X PixMap и GIMP, а парсер в рантайме превращает их в иерархию uGUI. Правки применяются сразу, без перезапуска. В папке `.claude/skills/` лежат навыки для агента: `authoring-promptugui-xml` для верстки, `authoring-promptugui-pxl` для рисования спрайтов, `scripting-promptugui-csharp` для кода на C# и `using-promptugui-addressables` для подгрузки ресурсов. По ним агент создает кнопки, списки, вкладки, карусели и Markdown-текст, анимации по смещениям и локализацию без генератора изображений.

Для кого. Unity-разработчикам, которые отдают верстку интерфейса Claude Code или Codex и хотят получить готовый результат без нарезки ассетов.

Подходит, если

  • Агент должен собрать меню с вкладками, списком и карточками, а результат нужно видеть сразу.
  • Иконки и рамки в пиксельном стиле надо нарисовать текстом без модели для картинок.
  • Интерфейс должен подстраиваться под размер экрана и работать с геймпада.
  • Строки интерфейса и код надо перевести автоматически с контекстом.

Не подходит, если

  • Проект на UI Toolkit: PromptUGUI строит иерархию uGUI.
  • Версия Unity ниже 2022.3.
  • Нужен фреймворк вне Unity.

Пример запроса к агенту

Собери в PromptUGUI главное меню с вкладками Играть, Настройки и Магазин и сохрани его как main.ui.xml.

Ограничения

Нужны Unity 2022.3 или новее, DotNet SDK 10, NuGetForUnity, R3 и LitMotion, а на Unity 2022.3 еще UniTask. Пакет ставится по адресу git через Package Manager, а папки навыков копируются в каталог навыков агента вручную. Автоперевод строк отправляет тексты в OpenAI-совместимую модель. Иконки из публичных наборов агент находит лучше, если имена последовательны, например при папке Font Awesome в роли SpriteSet Folder. Документация обещает горячую перезагрузку правок, но проверять вид интерфейса все равно нужно в редакторе Unity.

Как отключить. Удалите пакет через Package Manager и папки `authoring-promptugui-*`, `scripting-promptugui-csharp` и `using-promptugui-addressables` из каталога навыков.

Частые вопросы

Как установить PromptUGUI через Claude Code?

Попросите агента скачать через `curl` файл `install_for_claude.md` из репозитория и выполнить его шаги в проекте Unity.

Как поставить вручную?

Добавьте пакет в Package Manager по адресу `https://github.com/heerozh/PromptUGUI.git`, установите зависимости и скопируйте папки навыков из `.claude/skills/` в каталог навыков проекта.

Где лежат навыки для Codex?

В `<корень проекта>/.agents/skills/`. Файлы следуют открытой спецификации Agent Skills и подходят другим платформам.

Нужна ли модель для картинок?

Нет. Спрайты описываются текстом в формате `.pxl`, и агент рисует их сам.

Как работает локализация?

Фреймворк извлекает текст интерфейса и строки из `UI.Tr()`, отправляет их вместе с контекстом в OpenAI-совместимую модель и учитывает пометки автора о неточных переводах.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Плагин для создания игровых интерфейсов в браузере без движка: макет, код на TypeScript и экспорт в Unity.

ПлагинРасширенный доступ131Звезды репозитория

Скилл и CLI для агентов: интерфейс без шаблонного вида, 25 команд, проверка шаблонности правилами и оценка качества от 0 до 100

СкиллРасширенный доступ452Звезды репозитория

Дизайн-система в виде промптов для Codex, Cursor и Claude Code: каталоги стилей, раскладки, блоки и свои правила интерфейса.

СкиллРасширенный доступ230Звезды репозитория
Официальный

MCP-сервер и плагин для сборки интерфейса с агентом: курируемые дизайн-системы, промпты для UI и варианты верстки

MCP-серверРасширенный доступ2,2 тыс.Звезды репозитория

Game UI Design Workflow, скиллы для Cursor, задают правила согласования игровых экранов и передачи графики в движок.

СкиллРасширенный доступ430Звезды репозитория

Скилл building-ui открывает редактируемый макет интерфейса: правки идут прямо в нем, затем агент реализует его через TDD.

ПлагинРасширенный доступ82Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйЗвезды репозиторияГлавное отличие
PromptUGUI (эта карточка)нет93
Unity Skillsнет1 244официальные навыки Unity; PromptUGUI добавляет собственный язык описания UI и парсер
UnitySkillsнет1 936набор навыков для Unity-редактора; PromptUGUI сфокусирован на верстке uGUI из текста

Коротко о README

В репозитории есть демо WebGL, интерфейс которого целиком собрал кодовый агент, включая рамки и иконки. Обновление пакета и установка описаны в разделе Install / Upgrade.

Бейдж для README

Исходный SKILL.md

---
name: authoring-promptugui-xml
description: Use when authoring or editing PromptUGUI `.ui.xml` files (XML-driven uGUI for Unity 6+) —
If a task involves any XML-to-UI related content, it is highly likely to be based on this Skill.
---

# Authoring PromptUGUI `.ui.xml`

PromptUGUI is a Unity 6+ package that turns compact XML files into runtime uGUI hierarchies. The description file is **pure structure + named handles** — no logic, no data binding expressions. All event/data wiring happens C#-side via `Get<T>(id)` and R3 `Observable<T>`; see the **scripting-promptugui-csharp** skill for that side.

This skill covers everything you need to write or edit a `.ui.xml` correctly. Read top-to-bottom once; afterwards the **Quick Reference** at the end is enough.

## Validation & feedback loop (run after every write)

Every `.ui.xml` write MUST be verified before reporting the work done. Three steps, in order — each catches a different layer of mistake:

### 1. Full validate CLI for every `.ui.xml` (catches semantic mistakes XSD can't express)

```
dotnet run --project Library/PackageCache/com.promptugui.core@<hash>/.lint/UIXmlLint -- <path/to/your.ui.xml>
dotnet run --project Library/PackageCache/com.promptugui.core@<hash>/.lint/UIXmlLint -- Assets/   # 整个目录递归
```

- **Local / embedded packages have no `PackageCache` copy.** The `Library/PackageCache/com.promptugui.core@<hash>/…` path only exists when
  PromptUGUI is resolved from a registry. If `Packages/manifest.json` pins itwith a `file:` path (local / embedded package — common in symlinked or
  monorepo checkouts), there is no PackageCache copy; the `.lint/UIXmlLint` project (and the `Runtime/Core/Lint/` rule source) live at that `file:`
  source instead. Resolve the real base from the manifest: grep com.promptugui.core Packages/manifest.json # e.g. "file:../../PromptUGUI"
  dotnet run --project /.lint/UIXmlLint -- <path/to/your.ui.xml>
- No Unity required — pure .NET, runs anywhere `dotnet` is installed.
- **Inside Unity, the same lint is a menu: `Tools › PromptUGUI › Lint All UI XML`** (via MCP: `execute_menu_item("Tools/PromptUGUI/Lint All UI XML")`, then `read_console`). It lints every `.ui.xml` under `Assets/`, one Console line per finding (same `file:line: [CODE] …` spelling, the asset as context), warnings for rule findings and errors for what `UI.Open()` would throw on. Prefer it when a Unity instance is open: it resolves `<Import src>` through the **Addressables** settings and reads the **common libraries** straight from `PromptUGUISettings`, so it reaches the expanded pass where the CLI would need `--src-root`.
- The CLI merges the common libraries too — it finds the `PromptUGUISettings` asset under `Assets/` by itself (or takes `--settings <file.asset>` / `--commons <src>[@<as>]`), and `--src-root <dir>` tells it the folder short Addressables addresses / `UseResourcesResolver(root)` keys are relative to. A src it cannot resolve skips that file's expanded pass with a note (never a false `PUI-EXPAND`); the summary counts how many files that was.
- Surfaces context-dependent rules that XSD can't easily express, e.g. **`anchor` / `margin` on a direct child of `<VStack>` / `<HStack>` / `<Grid>`** (`PUI-LAYOUT-ANCHOR` / `PUI-LAYOUT-MARGIN`), or a bare `state-*` trigger with no `<Btn>` / `<Tab>` / `<Toggle>` ancestor (`PUI-STATE-NO-SOURCE`). Unity logs these as warnings (so `UI.Open()` doesn't break), but the CLI promotes them to errors with non-zero exit code so they don't slip through.
- Exit 0 = clean. Exit 1 = at least one parse error or rule violation; STOP and fix before reporting done.
- Rule code lives in `Library/PackageCache/com.promptugui.core@<hash>/Runtime/Core/Lint/` and is shared with `ScreenInstantiator`'s warning path — same logic, one source of truth.
- **Runtime warnings / errors point back at the markup too.** Anything Unity logs about a node — a lint rule at `UI.Open()`, a sprite that failed to resolve, an `FxImage` blur / glow kernel warning, a hard `ParseException` — ends with a second line `  at <Tag id='x'> src:line (via src:line)`, the same `src:line` spelling the CLI prints (`src` is the resolver key / `LoadDocument` label, not a filesystem path; a node inside a Template body names the template's declaration line, `via` the invocation). Read it from `read_console` to find what to edit; clicking the Console entry pings the GameObject in the Hierarchy.

### 3. Unity MCP live feedback

XSD catches structural errors and a couple of identity constraints — element/attribute names, attribute patterns (`<Icon name>`), and **duplicate `id=` within the same Screen / Template body** (via `xs:unique`). Unity still catches the rest — parser semantic errors (anchor/size conflicts, missing `ref=`, Template namespace clashes), runtime hot-reload errors.

After every `.ui.xml` write:

```
mcp__UnityMCP__refresh_unity(compile="request", mode="force")
mcp__UnityMCP__read_console(action="get", types=["error","warning"])
# Notice: this is a CoplayDev/unity-mcp, user may use official unity mcp.
```

**If MCP for Unity is unavailable** (call fails / no Unity instance): Note that the Unity MCP connection is prone to disconnection; therefore, we must first take the following steps:

Сообщить о проблеме