
Macos View Refactor
Refactor macOS SwiftUI views and scenes into stable structure.
Install
npx skills add robinebers/openusage --skill macos-view-refactor -g -a claude-code -y- Repository
- robinebers/openusage4.5k
- Category
- Mobile
- Updated
- 3d ago
- License
- MIT
- Context cost
- Lightabout 1,334 tokens
- Runs scripts
- No, instructions only
What it does
Refactor macOS SwiftUI views and scenes into stable structure. Use when splitting large views, tightening scene state, or narrowing AppKit escapes.
View Refactor
Overview
Refactor macOS views toward small, explicit, stable scene and view types. Default to native SwiftUI for layout, selection, commands, and settings. Reach for AppKit only at the narrow edges where desktop behavior truly requires it.
Core Guidelines
1) Model scenes explicitly
- Break the app into meaningful scene roots: main window, settings, utility windows, inspectors, or menu bar extras.
- Do not let one giant root view silently own every desktop surface.
2) Keep a predictable file shape
- Follow this ordering unless the file already has a stronger local convention:
- Environment
private/publiclet@State/ other stored properties- computed
var(non-view) initbody- computed view builders / other view helpers
- helper / async functions
2b) Split files by responsibility
- For non-trivial apps, do not keep the full app, all views, models, stores, networking clients, process clients, and helpers in one Swift file.
- Accept a single Swift file only for tiny throwaway examples or snippets: roughly under 50 lines, one screen, no persistence, no networking/process client, and no reusable models.
- Use
App/<AppName>App.swiftfor the@mainapp andAppDelegateonly. - Keep
Views/ContentView.swiftfocused on root layout and composition; move feature UI into files such asViews/SidebarView.swift,Views/DetailView.swift, andViews/ComposerView.swift. - Move value types and selection enums into
Models/*.swift, stores intoStores/*.swift, app-server/network/process clients intoServices/*.swift, and small formatters/resolvers/extensions intoSupport/*.swift. - Keep files small and named after the primary type they contain.
