Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/skills-registry --skill maui-platform-backend명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
| Use when this capability is needed.
> Use when this capability is needed.
Review architecture and API design for the vfs-s3 project. Use when the user mentions @architect, asks to review an issue's design, discuss module boundaries, API shape, or architectural decisions for vfs-s3. Also trigger when the user wants to create an ADR (Architecture Decision Record) or evaluate a technical approach for the project. Intended for dispatch from Codex automation or Claude routines; GitHub trigger phrase: @vfs-s3-bot please prepare design doc Use when this capability is needed.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | maui-platform-backend |
| description | > Use when this capability is needed. |
Guide for creating a complete .NET MAUI backend for a new target platform inside the dotnet/maui-labs repository.
Use this skill when:
dotnet new templates for a backendplatforms/Before writing any code, research the target platform:
UIView/NSView/Gtk.Widget)Reference the canonical implementation: Study the Linux.Gtk4 backend at platforms/Linux.Gtk4/ on main. It includes three subprojects: core handlers (Linux.Gtk4), essentials (Linux.Gtk4.Essentials), and Blazor WebView (Linux.Gtk4.BlazorWebView). Also reference the MAUI source at dotnet/maui.
Create the self-contained backend under platforms/[Platform.Name]/ following the pattern in references/project-structure.md.
Key files to create first:
Directory.Build.props, Directory.Packages.props, [Platform.Name].slnxsrc/[Platform.Name]/[Platform.Name].csproj with core handlerssamples/[Platform.Name].Sample/ with a minimal test app✅ Phase 1 is complete when:
.csproj files have correct namespaces (Microsoft.Maui.Platforms.[Platform.Name]), assembly names, and MAUI version referencesdotnet build platforms/[Platform.Name]/[Platform.Name].slnx succeeds (stub files are fine — handler logic comes in Phase 2)[Prefix]ViewHandler<TVirtualView, TPlatformView>)[Prefix]Dispatcher : IDispatcher + [Prefix]DispatcherProvider)[Prefix]MauiContext : IMauiContext)UseMauiApp[Platform]<TApp>())dotnet new templatesUse the full checklist in references/implementation-checklist.md to track progress.
GetDesiredSize and PlatformArrange. Don't re-implement layout logic.IView properties to native property setters. MAUI fires property changes; your mapper reacts.CrossPlatformMeasure/CrossPlatformArrange handles all positioning. Your handler just sets native view frames/bounds.AlertManager and IAlertManagerSubscription are internal. You MUST use DispatchProxy + reflection. There is no alternative.MainThread.BeginInvokeOnMainThread — it throws on custom backends. Use Application.Current?.Dispatcher.Dispatch() instead.SetDefault() reflection for Essentials — DI registration alone is NOT sufficient. Static XXX.Default properties still throw without the reflection workaround.Microsoft.Maui.Platforms.[Platform.Name], NOT Platform.Maui.[Platform]. New backends live in platforms/ in maui-labs, not standalone repos.NSImage(fileName) and similar APIs crash on missing files. Always implement a fallback chain (bundle resource → file path → named image → null).Layout(), IntrinsicContentSize, GetDesiredSize, or PlatformArrange. This causes hangs or SIGSEGV, not managed exceptions. Wrap ALL native layout overrides in try-catch. Also guard against NaN values — base.IntrinsicContentSize can return NaN when padding is NaN, causing cascading failures.Shell.Current.GoToAsync() on a non-UI thread causes SIGSEGV crashes (not managed exceptions). Always marshal navigation: check MainThread.IsMainThread (or platform equivalent like ) and wrap in . This applies to any handler that triggers navigation in response to async events.pkill -f YourApp.Sample or use Activity Monitor.maui devflow wait before inspecting: Don't use arbitrary sleeps. maui devflow wait --project ... --timeout 30 gates on actual agent connection, preventing false "element not found" errors.NSColor.LabelColor doesn't exist — use NSColor.ControlText; NSAccessibilityNotifications doesn't exist — use string literal "AXAnnouncementRequested"). Always verify bindings compile before building complex logic around them.todos table to track per-handler completion.ISwipeGestureController). Don't guess.// No native equivalent on [Platform] comment. Don't invent complex workarounds for optional properties.IsSupported = false. Don't spend time on impossible services.GetDesiredSize. Don't trace through the entire MAUI layout pipeline.platforms/references/PLATFORM_BACKEND_IMPLEMENTATION.md in this repo — comprehensive 1500-line guide with starter promptsSource: dotnet/maui-labs — distributed by TomeVault.
NSThread.IsMainDispatcher.Dispatch()StringValue, Font, and attributed text independently creates ordering bugs and visual glitches. Use a single UpdateAttributedText() method that owns the entire text rendering path (font, color, decorations, alignment, line-break mode, HTML spans). Every label property change should flow through this one method.