Need
분할 뷰 앱 셸
Default options
NavigationSplitView, .sidebar 목록, inspector(isPresented:)
Why it's needed
계속 표시되는 사이드바, 세부 정보 패널, 인스펙터는 터치 중심의 푸시 탐색보다 일반적인 Mac 앱 레이아웃에 더 잘 맞습니다.
.md to the page URL.
Codex use case
Codex로 사이드바, 세부 정보 패널, 인스펙터, 명령, 설정을 갖춘 Mac 네이티브 SwiftUI 앱 셸을 만드세요.
Codex와 Build macOS Apps 플러그인을 사용해 앱 아이디어를 데스크톱 네이티브 NavigationSplitView 앱 셸로 구현하고, 사이드바 선택 상태를 안정적으로 유지하며, 메뉴·툴바·키보드 단축키를 추가하고, 환경설정을 전용 Settings 씬으로 옮기세요.
Codex로 사이드바, 세부 정보 패널, 인스펙터, 명령, 설정을 갖춘 Mac 네이티브 SwiftUI 앱 셸을 만드세요.
Codex와 Build macOS Apps 플러그인을 사용해 앱 아이디어를 데스크톱 네이티브 NavigationSplitView 앱 셸로 구현하고, 사이드바 선택 상태를 안정적으로 유지하며, 메뉴·툴바·키보드 단축키를 추가하고, 환경설정을 전용 Settings 씬으로 옮기세요.
Codex와 Build macOS Apps 플러그인을 사용해 앱 아이디어를 데스크톱 네이티브 NavigationSplitView 앱 셸로 구현하고, 사이드바 선택 상태를 안정적으로 유지하며, 메뉴·툴바·키보드 단축키를 추가하고, 환경설정을 전용 Settings 씬으로 옮기세요.
관련 링크
| Skill | Why use it |
|---|---|
| Build macOS Apps | macOS SwiftUI 패턴, 창 관리, AppKit 상호 운용, 빌드/실행 스킬을 활용해 사이드바·세부 정보·인스펙터 레이아웃을 만들고, 메뉴와 설정을 연결하며, 셸 중심의 루프로 앱을 검증하세요. |
이 사용 사례에서는 터치 중심 스택을 데스크톱에 늘려 놓은 듯한 모습이 아니라, 데스크톱에 맞게 설계된 Mac 앱 셸로 앱 아이디어를 구현합니다. Codex에 먼저 씬 모델을 선택하도록 요청한 다음, 안정적으로 유지되는 사이드바 선택 상태, 세부 정보 영역, 보조 컨트롤이나 메타데이터를 위한 인스펙터를 중심으로 메인 창을 설계하게 하세요.

Codex가 이 데스크톱 구조를 적용하고 빌드/실행 루프를 셸 중심으로 유지하도록 하려면 Build macOS Apps 플러그인을 사용하세요. 이 플러그인의 macOS SwiftUI 패턴 스킬은 씬 설계, 사이드바, 인스펙터, 명령, 설정뿐 아니라 SwiftUI만으로 특정 Mac 동작을 온전히 구현하기 어려울 때 필요한 소규모 AppKit 브리지에도 적합합니다.
탐색을 계속 표시하고 선택 항목을 안정적으로 유지해야 하는 기능이라면 NavigationSplitView를 우선 사용하세요. 사이드바 행은 네이티브하고 가볍게 유지하고, 사이드바에는 시스템 배경을 사용하며, 맞춤형 카드나 상세한 메타데이터는 세부 정보 패널이나 인스펙터에 배치하세요.
struct LibraryRootView: View {
@SceneStorage("LibraryRootView.selection") private var selection: Item.ID?
@SceneStorage("LibraryRootView.showInspector") private var showInspector = true
var body: some View {
NavigationSplitView {
List(selection: $selection) {
ForEach(items) { item in
Label(item.title, systemImage: item.systemImage)
.tag(item.id)
}
}
.listStyle(.sidebar)
.navigationTitle("Library")
} detail: {
ItemDetailView(selection: selection)
.inspector(isPresented: $showInspector) {
ItemInspectorView(selection: selection)
}
}
}
}
앱에 특수한 분할 영역 크기 조절, 저수준 창 조정 또는 맞춤형 리스폰더 체인 동작이 필요하다면 Codex에 SwiftUI 셸을 그대로 유지하고 그 한 가지 공백을 메우는 데 필요한 최소한의 AppKit 브리지만 추가하도록 요청하세요.
Mac 사용자는 메뉴 막대, 툴바, 키보드 단축키에서 중요한 작업을 쉽게 찾을 수 있어야 합니다. 데스크톱 사용자가 제스처로만 사용할 수 있는 컨트롤을 찾아 헤매지 않도록 씬 수준의 commands, 상황별 메뉴 항목, 툴바 버튼을 동일한 앱 작업에 연결해 달라고 Codex에 요청하세요.
@main
struct LibraryApp: App {
var body: some Scene {
WindowGroup {
LibraryRootView()
}
.commands {
CommandMenu("Library") {
Button("New Item") {
// Create a new item.
}
.keyboardShortcut("n")
Button("Toggle Inspector") {
// Route this command to the focused window or selected item state.
}
.keyboardShortcut("i", modifiers: [.command, .option])
}
}
Settings {
LibrarySettingsView()
}
}
}
명령이 현재 세부 정보 항목에 적용되어야 한다면 FocusedValue, 씬 상태 또는 명시적 선택 상태를 사용하세요. 단축키가 여러 곳에 등록될 수 있다면 앱에 명확한 명령 경로가 하나만 남도록 소유권을 통합해 달라고 Codex에 요청하세요.
Settings에서 환경설정 관리하기앱 환경설정에는 전용 Settings 씬을 사용하고, @AppStorage로 지속적으로 유지해야 하는 사용자 선택 사항을 저장하세요. 이는 메인 콘텐츠 창 안에 설정 화면을 푸시하는 방식보다 일반적으로 Mac 앱에 더 적합합니다.
struct LibrarySettingsView: View {
@AppStorage("showItemMetadata") private var showItemMetadata = true
var body: some View {
TabView {
Form {
Toggle("Show Item Metadata", isOn: $showItemMetadata)
}
.tabItem { Label("General", systemImage: "gearshape") }
}
.frame(width: 460, height: 260)
.scenePadding()
}
}
이 페이지는 프롬프트에 앱 개념, 주요 콘텐츠 객체, 핵심 작업을 명시한 다음 Codex에 해당 워크플로우를 중심으로 데스크톱 셸부터 만들도록 요청할 때 가장 효과적입니다. 에이전트가 간단한 빌드/실행 검사를 수행하고 씬 구조, 명령 연결, 상태 소유권, AppKit 브리지가 필요했던 부분을 요약하게 하세요.
각 사이드바 행에는 아이콘 하나, 제목 한 줄, 짧은 보조 정보 최대 한 줄만 사용하세요. 사이드바 목록을 쉽게 훑어볼 수 있도록 더 풍부한 카드, 카운터, 메타데이터는 세부 정보 패널이나 인스펙터로 옮기세요.
사용자 환경설정이 앱 전체에 영향을 준다면 또 다른 푸시형 설정 화면을 만들지 말고, Codex에 해당 컨트롤을 @AppStorage로 저장해 Settings 씬에 배치하고 앱 메뉴에서 진입점을 제공하도록 요청하세요.
기능에서 열기/저장 패널, 퍼스트 리스폰더 제어 또는 맞춤형 NSView 사용이 필요하다면 전체 창을 AppKit으로 다시 작성하지 말고, SwiftUI가 소유하는 상태 모델 주변의 작은 보완 계층으로만 AppKit을 사용하세요.
Need
Default options
Why it's needed
Need
분할 뷰 앱 셸
Default options
NavigationSplitView, .sidebar 목록, inspector(isPresented:)
Why it's needed
계속 표시되는 사이드바, 세부 정보 패널, 인스펙터는 터치 중심의 푸시 탐색보다 일반적인 Mac 앱 레이아웃에 더 잘 맞습니다.
Need
데스크톱 작업 및 설정
Default options
commands, CommandMenu, 키보드 단축키, Settings 씬
Why it's needed
메뉴 막대 작업, 단축키, 전용 설정 창을 사용하면 이 기능이 데스크톱에 억지로 늘려 놓은 iOS 화면이 아니라 실제 Mac 앱처럼 느껴집니다.
Need
상태 소유권
Default options
@State, @SceneStorage, @AppStorage, 명시적 선택 바인딩
Why it's needed
Codex는 습관적으로 뷰 모델을 추가하지 않고도 사이드바 선택, 인스펙터 표시 상태, 사용자 환경설정을 예측 가능하게 유지할 수 있습니다.
Need
네이티브 기능 보완 수단
Default options
AppKit 을 최소 범위의 NSViewRepresentable 또는 NSWindow 브리지를 통해 사용
Why it's needed
씬 및 선택 상태의 기준은 SwiftUI로 유지하면서, SwiftUI로 깔끔하게 표현할 수 없는 플랫폼 동작에만 AppKit을 사용하세요.
| Need | Default options | Why it's needed |
|---|---|---|
| 분할 뷰 앱 셸 | NavigationSplitView , .sidebar 목록, inspector(isPresented:) | 계속 표시되는 사이드바, 세부 정보 패널, 인스펙터는 터치 중심의 푸시 탐색보다 일반적인 Mac 앱 레이아웃에 더 잘 맞습니다. |
| 데스크톱 작업 및 설정 | commands , CommandMenu , 키보드 단축키, Settings 씬 | 메뉴 막대 작업, 단축키, 전용 설정 창을 사용하면 이 기능이 데스크톱에 억지로 늘려 놓은 iOS 화면이 아니라 실제 Mac 앱처럼 느껴집니다. |
| 상태 소유권 | @State , @SceneStorage , @AppStorage , 명시적 선택 바인딩 | Codex는 습관적으로 뷰 모델을 추가하지 않고도 사이드바 선택, 인스펙터 표시 상태, 사용자 환경설정을 예측 가능하게 유지할 수 있습니다. |
| 네이티브 기능 보완 수단 | AppKit 을 최소 범위의 NSViewRepresentable 또는 NSWindow 브리지를 통해 사용 | 씬 및 선택 상태의 기준은 SwiftUI로 유지하면서, SwiftUI로 깔끔하게 표현할 수 없는 플랫폼 동작에만 AppKit을 사용하세요. |
Codex로 macOS SwiftUI 앱을 빌드하고 셸 우선 빌드 및 실행 루프를 구성하며, 앱이 발전함에 따라 데스크톱 네이티브 씬, 윈도우, AppKit 및 서명...
Codex와 Build macOS Apps 플러그인을 사용해 창, 사이드바, 명령 또는 동기화 플로우에 핵심 정보가 담긴 `Logger` 이벤트 몇 개를 추가한 다음...
Codex와 Build iOS Apps 플러그인을 사용해 앱이 App Intents를 통해 노출해야 할 액션과 엔티티를 파악하고, 이를 단축어와 Spotlight...