PromptUGUI — скилл
PromptUGUI дает агентам краткий язык описания интерфейсов Unity в XML и набор навыков, чтобы они верстали uGUI из текста.
- 93 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Агент создает и правит файлы интерфейса, спрайты и код C# в проекте Unity.
- Установка подтягивает пакеты из git и NuGet, а автоперевод шлет тексты внешней модели.
Установка
- Работает в
В терминале, через 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.
Скилл и CLI для агентов: интерфейс без шаблонного вида, 25 команд, проверка шаблонности правилами и оценка качества от 0 до 100
Дизайн-система в виде промптов для Codex, Cursor и Claude Code: каталоги стилей, раскладки, блоки и свои правила интерфейса.
MCP-сервер и плагин для сборки интерфейса с агентом: курируемые дизайн-системы, промпты для UI и варианты верстки
Game UI Design Workflow, скиллы для Cursor, задают правила согласования игровых экранов и передачи графики в движок.
Скилл building-ui открывает редактируемый макет интерфейса: правки идут прямо в нем, затем агент реализует его через TDD.
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| 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: