native-feel.skill
Справочник по настольным приложениям на нескольких ОС с нативным ощущением: восемь принципов, четыре слоя, разбор WebView и аудит из 75 пунктов
- 1 933 ★ репозитория
- Последний коммит
- MIT
Минимальный доступ
Почему такой уровень
- Справочный скилл: только тексты и чек-листы, ничего не запускает и в сеть не ходит
Установка
- Работает в
В терминале, через SkillFoxx CLI
npx skillfoxx add skills/native-feel-skillОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемМинимальный доступИнструмент ничего не запускает и не ходит в сеть.
- Справочный скилл: только тексты и чек-листы, ничего не запускает и в сеть не ходит
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
native-feel.skill учит агента советовать по архитектуре настольных приложений для macOS и Windows, которые работают как родные, но делят один код интерфейса. Основа скилла — разбор технической статьи Raycast о версии 2.0 и обратная разработка собранного Raycast Beta.app. Автор сводит выводы к восьми принципам, например «граница проходит по поверхности отрисовки» и «одна схема на много языков». Архитектура в скилле четырехслойная: нативная оболочка на Swift/AppKit и C#/WPF, системный WebView (WKWebView и WebView2) с общим интерфейсом на React и TypeScript, один долгоживущий процесс Node и ядро на Rust с типизированными привязками UniFFI. Семь справочных файлов раскрывают философию, слои, обходы капризов WebKit и WebView2, типизированный обмен между языками, измерение памяти, 70 с лишним соглашений нативного вида и доказательства из Raycast Beta. Агент загружает только нужный файл под вопрос. Перед советом об архитектуре он проходит дерево решений, которое отсекает неподходящие проекты. Перед тем как назвать приложение родным по ощущению, он прогоняет аудит готовности на 75 пунктов.
Для кого. Для архитекторов, техлидов и разработчиков, которые делают приложение для macOS и Windows с одной кодовой базой интерфейса, например лаунчер или рабочее место с ИИ.
Подходит, если
- Приложение на Electron или Tauri выглядит как веб-страница, и нужно понять, с чего начать правки: агент пройдет по аудиту готовности и покажет типичные провалы вроде `cursor: pointer` на строках
- Новое настольное приложение должно работать на macOS и Windows с общим интерфейсом, и нужна схема слоев до первой строки кода
- WKWebView мерцает при скрытии и показе окна, скилл ведет в файл про выживание WebView
- Нужно решить, как типизировать обмен между Rust, Swift, C# и TypeScript без ручного дублирования типов
- Activity Monitor показывает 450 МБ, и надо понять, что из этого реальная нагрузка
Не подходит, если
- Проект — чистое веб-приложение или мобильное: скилл прямо исключает такие случаи
- У приложения нет требования ощущаться родным: достаточно обычного Electron, и дерево решений тоже может так закончиться
- Нужен запуск быстрее 100 мс или потребление памяти ниже 150 МБ: по дереву решений такие проекты надо делать полностью нативными
- Нужны готовые шаблоны кода: в скилле справочные материалы и чек-листы, генератора проекта нет
Пример запроса к агенту
Мое Electron-приложение на macOS выглядит как сайт, дизайнер недоволен. Проведи аудит нативного ощущения и скажи, какие правки дадут больше всегоОграничения
Скилл содержит текстовые справочники и чек-листы, ничего не запускает и не пишет код сам. Рекомендации опираются на один пример, архитектуру Raycast, поэтому для других продуктов их нужно примерять к своим условиям. Выводы об устройстве Raycast Beta взяты из обратной разработки версии 0.60.0 для macOS 26 и новее на arm64; для других сборок они могут не совпасть.
Архитектура рассчитана на команду, которая готова вести два нативных слоя, Swift/AppKit и C#/WPF, плюс общий интерфейс и ядро на Rust. Для маленького проекта с коротким сроком скилл сам советует начинать с Electron. Описание в SKILL.md называет чек-лист готовности тридцатипунктовым, а README и описание репозитория говорят о 75 пунктах: ориентируйтесь на файл `checklists/ship-readiness.md`. Что понимать под нативным ощущением, решаете вы вместе с дизайнером, объективной метрики скилл не дает.
Как отключить. Удалите папку `native-feel-cross-platform-desktop` из каталога скиллов агента, например из `~/.claude/skills/`, или снимите скилл командой менеджера `skills`. Других следов установка не оставляет.
Частые вопросы
Как поставить native-feel.skill в Claude Code?
Командой `npx skills add yetone/native-feel-skill -g`, флаг `-g` ставит скилл на уровне пользователя. Второй путь — вставить агенту просьбу из репозитория: склонировать проект в каталог скиллов как `native-feel-cross-platform-desktop` и проверить, что рядом с SKILL.md лежат references и checklists.
Когда скилл включается сам?
Когда разговор касается кроссплатформенных настольных приложений, Electron или Tauri как альтернатив, особенностей WKWebView и WebView2, приложений в трее, лаунчеров и архитектуры в духе Raycast. Для чисто веб- и мобильных проектов он не предназначен.
Чем советы отличаются от обычного «берите Electron»?
Скилл рекомендует нативную оболочку со встроенным системным WebView. Причина: Electron прячет оконный класс, WebView и материалы платформы, которые нужны для ощущения родного приложения. Он же признает, что для небольших проектов с коротким сроком Electron подходит.
Что такое аудит готовности и что в нем проверяют?
Это чек-лист из 75 пунктов в `checklists/ship-readiness.md`. Типичные провалы, которые называет автор: `cursor: pointer` на строках, веб-модалки вместо нативных листов, фиксированный фирменный цвет вместо системного акцента, плавные переходы между страницами, непрозрачный фон окна и сработавшее контекстное меню WebKit.
Откуда в скилле данные о Raycast?
Из публичной технической статьи Raycast о версии 2.0 и из обратной разработки Raycast Beta.app версии 0.60.0. Что нашли и как, описано в `references/07-evidence-raycast.md`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыNative SDK — скилл для агентов
Native SDK
Набор скиллов к экспериментальному Native SDK: агент получает от установленного CLI справку по версии тулкита для настольных приложений на TypeScript
Dimillian Skills
Skills
Набор из 16 инженерных скиллов для агентов: разработка под Apple, упаковка macOS, производительность React, ревью и рефакторинг кода
Builder Skills
Skills for agents
Набор небольших скиллов от Builder.io для рабочих привычек агента: визуальные планы и разборы диффов, сверка с документацией, кросс-агентное ревью и аккуратные
Agent Skills от Tech Leads Club
Agent Skills
Проверяемый реестр скиллов с CLI для установки в два десятка агентов и MCP-сервером для поиска скиллов на лету
Набор скиллов от команды Kotlin для агентов: перевод Java в Kotlin, миграции сборки и правильная работа с бэкенд-фреймворками
Личный набор автора: общие правила для агентов и десятки скиллов для GitHub, браузера, macOS, сообщений и релизов, плюс скрипт синхронизации
Коротко о README
Описание сперва показывает две команды установки и два сценария: переделка приложения, которое выглядит как веб-страница, и новый проект с упором на нативное ощущение. Затем перечислены восемь принципов, структура папок и источники. Автор подчеркивает, что архитектура принадлежит Raycast, а философия и выводы из обратной разработки — его собственный синтез.
Бейдж для README
Исходный SKILL.md
--- name: native-feel-cross-platform-desktop description: Use when the user is designing, prototyping, or rewriting a desktop app that must run on multiple OSes (macOS + Windows, optionally Linux) AND feel indistinguishable from a native app to its users — fast launch, native windowing, native input handling, native materials. Trigger words include "cross-platform desktop", "Electron alternative", "Tauri vs native", "WebView wrapper", "near-native performance", "Raycast architecture", "WebKit/WebView2 quirks", "WKWebView", "system tray app", "global hotkey app", "launcher app". Do NOT trigger this skill for pure web apps, pure mobile apps, or for greenfield projects that have no native-feel requirement. --- # Native-Feel Cross-Platform Desktop You are advising on the architecture of a cross-platform desktop app that must *feel native*. This skill captures the philosophy, architecture, and concrete pitfalls — distilled from Raycast's public technical deep-dive on their 2.0 rewrite and verified by reverse-engineering the shipping `Raycast Beta.app` binary on macOS. ## How to use this skill 1. **Start with the philosophy in `references/01-philosophy.md`.** It frames the central tension this architecture resolves — *how to get cross-platform DX and near-native performance at the same time* — and gives you eight tenets that name the structural moves. Every concrete decision later flows from one of those tenets. If the user is making a decision that contradicts a tenet, surface the tenet by number and short name and explain the trade-off. 2. **Match the user's question to a reference file.** Don't dump the whole skill — load only what's needed: - Architecture / "which layers should I have?" → `references/02-architecture.md` - "Why does my WebView flicker / stutter / freeze when hidden?" → `references/03-webview-survival.md` (the highest-density file — every item is a real bug with a real fix) - "How do I type my IPC across Rust/Swift/C#/TS?" → `references/04-ipc-contract.md` - "Why does Activity Monitor say 400 MB?" → `references/05-memory-truths.md` - "How do I make it not feel like a webpage?" → `references/06-native-conventions.md` - "What does Raycast actually ship?" (concrete evidence) → `references/07-evidence-raycast.md` 3. **Before recommending an architecture, run the decision tree in `checklists/decision-tree.md`.** It rules this stack OUT for several common project shapes — say so directly. 4. **Before the user claims their app "feels native", run `checklists/ship-readiness.md`.** It's a 30-item audit; most apps fail 5–10 items on first pass. ## The one-paragraph version A native-feel cross-platform desktop app is **not a web app with native hooks** and **not Electron with a custom theme**. It is a **native shell** (Swift/AppKit on macOS, C#/WPF on Windows) that owns the window, the hotkeys, the menu bar, the materials, and the lifecycle — and embeds the system WebView (WKWebView or WebView2) purely as a *rendering surface* for a shared React/TypeScript UI. Business logic lives in a long-lived Node process bundled with the app. Performance-critical subsystems (file indexing, calculation, crypto) live in Rust, shared across platforms and exposed through UniFFI-generated typed bindings. Four runtimes communicate through a single declared interface that generates typed clients for each side. The whole thing fits in ~400 MB resident memory, of which ~150 MB is the inescapable WebView+Node baseline. You pay that baseline so that one React codebase serves both OSes; you earn it back through hot-reload iteration speed and a shared extension API that already runs thousands of community plugins on both platforms. ## Core anti-patterns to call out immediately When you see the user doing any of these, stop and ask: - **"Let's just use Electron and theme it"** → Electron abstracts away the system WebView, window class, and material APIs you need for native feel. You cannot get Liquid Glass / acrylic / true vibrancy through Electron's abstraction without forking it. Recommend `references/02-architecture.md` instead. - **"Let's use Tauri — it's like Electron but lighter"** → Tauri ships its own WebView wrapper and abstracts platform APIs. Same control-loss problem as Electron, plus less mature. Acceptable for utilities; not for apps where every window animation has to match the OS. - **"Let's render UI in Swift/C# and share business logic"** → You will maintain two UI codebases forever. Every feature ships twice. Designers maintain two specs. Recommend WebView-as-renderer instead. - **"WebKit is throttling us; let's spin our own polling loop"** → No. The throttling is solvable with two specific `WKWebView` configuration flags. See `references/03-webview-survival.md` § "Hidden window throttling". - **"Memory is bad — we're at 400 MB"** → Probably wrong measurement. Activity Monitor double-counts shared frameworks and treats compressed pages as resident. See `references/05-memory-truths.md` before optimizing anything. - **"Let's hand-write the IPC types in each language"** → They will drift within a sprint. Use UniFFI (for Rust ↔ Swift/Kotlin/C#) or hand-roll a single IDL that generates clients. See `references/04-ipc-contract.md`. - **"Adding `cursor: pointer` to make it feel responsive"** → That's exactly what makes it feel *web*. Native UIs do not change the cursor on hoverable rows. See `references/06-native-conventions.md`. ## Output style When advising: - Quote the specific tenet from `references/01-philosophy.md` that applies (e.g., *"T3 — adopt the platform; don't compete with it: the OS draws blur better than you can"*). - Cite the file and section, not the whole skill. - For each recommendation, name what the user is **giving up** in exchange. There are no free wins in this architecture — the whole skill is about deliberate trade-offs. - If you're unsure whether the user's project should even use this architecture, run them through `checklists/decision-tree.md` before giving advice. It is okay to conclude "this skill doesn't apply — build a normal Electron app."