For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Hauptnavigation
Codex

Codex use case

Grundgerüst für eine Mac-App entwickeln

Entwickle mit Codex ein natives SwiftUI-Grundgerüst für eine Mac-App mit Seitenleiste, Detailbereich, Inspektor, Befehlen und Einstellungen.

Difficulty Fortgeschritten
Time horizon 1 h

Nutze Codex und das Plug-in Build macOS Apps, um aus einer App-Idee eine native Desktop-App mit NavigationSplitView zu entwickeln. Halte dabei die Auswahl in der Seitenleiste stabil, ergänze Menüs, Symbolleisten und Tastaturkurzbefehle und bringe die Einstellungen in einer eigenen Szene vom Typ Settings unter.

Am besten geeignet für

  • Neue Ideen für Mac-Apps sowie Konzepte, die ursprünglich für das iPad oder Web gedacht waren und nun ein echtes Desktop-Grundgerüst mit dauerhafter Navigation, Menüs, Symbolleisten und Tastaturkurzbefehlen benötigen
  • Editor-, Bibliotheks-, Admin- oder Review-Tools, bei denen die Auswahl in einer Seitenleiste den Detailbereich steuert und ein Inspektor zusätzliche Metadaten oder Aktionen bereitstellt
  • Mac-Apps, bei denen Einstellungen in einem eigenen Fenster statt auf einem weiteren Screen im Navigations-Stack des Hauptinhalts angezeigt werden sollen

Contents

    ← Alle Anwendungsfälle

    Grundgerüst für eine Mac-App entwickeln

    Entwickle mit Codex ein natives SwiftUI-Grundgerüst für eine Mac-App mit Seitenleiste, Detailbereich, Inspektor, Befehlen und Einstellungen.

    Nutze Codex und das Plug-in Build macOS Apps, um aus einer App-Idee eine native Desktop-App mit NavigationSplitView zu entwickeln. Halte dabei die Auswahl in der Seitenleiste stabil, ergänze Menüs, Symbolleisten und Tastaturkurzbefehle und bringe die Einstellungen in einer eigenen Szene vom Typ Settings unter.

    Fortgeschritten
    1 h

    Nutze Codex und das Plug-in Build macOS Apps, um aus einer App-Idee eine native Desktop-App mit NavigationSplitView zu entwickeln. Halte dabei die Auswahl in der Seitenleiste stabil, ergänze Menüs, Symbolleisten und Tastaturkurzbefehle und bringe die Einstellungen in einer eigenen Szene vom Typ Settings unter.

    Fortgeschritten
    1 h

    Am besten geeignet für

    • Neue Ideen für Mac-Apps sowie Konzepte, die ursprünglich für das iPad oder Web gedacht waren und nun ein echtes Desktop-Grundgerüst mit dauerhafter Navigation, Menüs, Symbolleisten und Tastaturkurzbefehlen benötigen
    • Editor-, Bibliotheks-, Admin- oder Review-Tools, bei denen die Auswahl in einer Seitenleiste den Detailbereich steuert und ein Inspektor zusätzliche Metadaten oder Aktionen bereitstellt
    • Mac-Apps, bei denen Einstellungen in einem eigenen Fenster statt auf einem weiteren Screen im Navigations-Stack des Hauptinhalts angezeigt werden sollen

    Skills und Plug-ins

    • Nutze die Skills zu SwiftUI-Mustern für macOS, Fensterverwaltung, AppKit-Interoperabilität sowie Build und Run, um Layouts mit Seitenleiste, Detailbereich und Inspektor zu erstellen, Menüs und Einstellungen einzubinden und die App iterativ, ausgehend von der Shell, zu validieren.
    Skill Why use it
    Build macOS Apps Nutze die Skills zu SwiftUI-Mustern für macOS, Fensterverwaltung, AppKit-Interoperabilität sowie Build und Run, um Layouts mit Seitenleiste, Detailbereich und Inspektor zu erstellen, Menüs und Einstellungen einzubinden und die App iterativ, ausgehend von der Shell, zu validieren.

    Einstiegs-Prompt

    Nutze das Plug-in Build macOS Apps, um aus [describe your app idea] ein natives Mac-App-Grundgerüst mit SwiftUI, einer Seitenleiste, einem Detailbereich, einem Inspektor, Befehlen und Einstellungen zu entwickeln. Vorgaben: - Lege zuerst das Szenenmodell fest. Verwende für das Hauptfenster vorzugsweise `WindowGroup` und füge für die Einstellungen eine eigene Szene vom Typ `Settings` hinzu. - Baue die Hauptoberfläche mit `NavigationSplitView` auf. Verwende dabei einen expliziten Auswahlzustand, eine native Liste mit dem Stil `.sidebar`, einen Detailbereich und einen mit `inspector(isPresented:)` eingeblendeten Bereich für zusätzliche Metadaten oder Steuerelemente. - Halte die Zeilen der Seitenleiste schlank und nativ: ein Symbol, eine Titelzeile und höchstens eine kurze Zusatzzeile. Verwende nicht für jede Zeile große benutzerdefinierte Karten, es sei denn, dafür gibt es einen triftigen Produktgrund. - Mache wichtige Aktionen über `commands` auf Szenenebene, `CommandMenu`, Schaltflächen in der Symbolleiste und Tastaturkurzbefehle zugänglich. Verstecke den einzigen Weg zu einer kritischen Aktion nicht hinter Gesten. - Nutze `@SceneStorage` für den UI-Zustand eines Fensters, `@AppStorage` für Einstellungen und explizite, vom übergeordneten View verwaltete Auswahl-Bindings für die Koordination von sidebar/detail. - Bevorzuge Systemmaterialien, semantische Farben und standardmäßige Hintergründe für die Seitenleiste. Verwende eigene Stile nur bei Bedarf für Karten im Detailbereich oder Inspektor. - Verwende nur dann eine schmale Bridge zu AppKit, wenn SwiftUI ein bestimmtes Desktop-Verhalten nicht sauber abbilden kann. - Erstelle oder aktualisiere `script/build_and_run.sh`, führe die kleinste sinnvolle Prüfung für build/run aus und nenne mir genau, welche Befehle du verwendet hast. Liefere: - die Szenenstruktur und die wichtigsten Views für sidebar/detail/inspector - die Einbindung von Menü, Symbolleiste und Tastaturkurzbefehlen - die Szene für Einstellungen und das zugehörige Zustandsmodell - jede hinzugefügte Bridge zu AppKit und eine Begründung, warum sie nötig war - die Validierungsschritte für build/run und alle von dir empfohlenen Folgemaßnahmen für die Desktop-UX
    Nutze das Plug-in Build macOS Apps, um aus [describe your app idea] ein natives Mac-App-Grundgerüst mit SwiftUI, einer Seitenleiste, einem Detailbereich, einem Inspektor, Befehlen und Einstellungen zu entwickeln. Vorgaben: - Lege zuerst das Szenenmodell fest. Verwende für das Hauptfenster vorzugsweise `WindowGroup` und füge für die Einstellungen eine eigene Szene vom Typ `Settings` hinzu. - Baue die Hauptoberfläche mit `NavigationSplitView` auf. Verwende dabei einen expliziten Auswahlzustand, eine native Liste mit dem Stil `.sidebar`, einen Detailbereich und einen mit `inspector(isPresented:)` eingeblendeten Bereich für zusätzliche Metadaten oder Steuerelemente. - Halte die Zeilen der Seitenleiste schlank und nativ: ein Symbol, eine Titelzeile und höchstens eine kurze Zusatzzeile. Verwende nicht für jede Zeile große benutzerdefinierte Karten, es sei denn, dafür gibt es einen triftigen Produktgrund. - Mache wichtige Aktionen über `commands` auf Szenenebene, `CommandMenu`, Schaltflächen in der Symbolleiste und Tastaturkurzbefehle zugänglich. Verstecke den einzigen Weg zu einer kritischen Aktion nicht hinter Gesten. - Nutze `@SceneStorage` für den UI-Zustand eines Fensters, `@AppStorage` für Einstellungen und explizite, vom übergeordneten View verwaltete Auswahl-Bindings für die Koordination von sidebar/detail. - Bevorzuge Systemmaterialien, semantische Farben und standardmäßige Hintergründe für die Seitenleiste. Verwende eigene Stile nur bei Bedarf für Karten im Detailbereich oder Inspektor. - Verwende nur dann eine schmale Bridge zu AppKit, wenn SwiftUI ein bestimmtes Desktop-Verhalten nicht sauber abbilden kann. - Erstelle oder aktualisiere `script/build_and_run.sh`, führe die kleinste sinnvolle Prüfung für build/run aus und nenne mir genau, welche Befehle du verwendet hast. Liefere: - die Szenenstruktur und die wichtigsten Views für sidebar/detail/inspector - die Einbindung von Menü, Symbolleiste und Tastaturkurzbefehlen - die Szene für Einstellungen und das zugehörige Zustandsmodell - jede hinzugefügte Bridge zu AppKit und eine Begründung, warum sie nötig war - die Validierungsschritte für build/run und alle von dir empfohlenen Folgemaßnahmen für die Desktop-UX

    Mit dem Szenenmodell für den Mac beginnen

    Dieser Anwendungsfall zeigt, wie du aus einer App-Idee ein Grundgerüst für eine Mac-App machst, das sich wie für den Desktop entwickelt anfühlt und nicht wie ein vergrößerter, für Touch-Bedienung konzipierter Stack. Lass Codex zuerst das Szenenmodell auswählen und dann das Hauptfenster mit einer stabilen Auswahl in der Seitenleiste, einem Detailbereich und einem Inspektor für zusätzliche Steuerelemente oder Metadaten gestalten.

    Natives Mac-App-Grundgerüst mit Seitenleiste und Detailbereich; in der Seitenleiste ist ein Element ausgewählt und sein Inhalt wird im Detailbereich angezeigt

    Nutze das Plug-in Build macOS Apps, wenn Codex diese Desktop-Struktur umsetzen und die Build-/Run-Schleife weiterhin vorrangig über die Shell abwickeln soll. Der zugehörige Skill für SwiftUI-Muster unter macOS eignet sich für Szenendesign, Seitenleisten, Inspektoren, Befehle, Einstellungen und kleine AppKit-Bridges, wenn SwiftUI ein bestimmtes Mac-spezifisches Verhalten nicht ganz abbilden kann.

    Seitenleiste, Detailbereich und Inspektor erstellen

    Bevorzuge NavigationSplitView, wenn die Funktion von einer dauerhaften Navigation und einem stabil ausgewählten Element profitiert. Halte die Zeilen der Seitenleiste nativ und schlank, nutze für die Seitenleiste Systemhintergründe und verwende eigene Karten oder umfangreiche Metadaten nur im Detailbereich oder Inspektor.

    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)
            }
        }
      }
    }

    Wenn die App ungewöhnliche Größenverhältnisse in der geteilten Ansicht, eine systemnahe Fensterkoordination oder ein angepasstes Verhalten der Responder Chain benötigt, lass Codex das SwiftUI-Grundgerüst beibehalten und nur die kleinstmögliche AppKit-Bridge ergänzen, die diese konkrete Lücke schließt.

    Befehle, Symbolleisten und Tastaturkurzbefehle in die Desktop-Ebene integrieren

    Auf dem Mac sollten wichtige Aktionen in der Menüleiste und der Symbolleiste sowie über Tastaturkurzbefehle auffindbar sein. Lass Codex commands auf Szenenebene, kontextsensitive Menüeinträge und Schaltflächen in der Symbolleiste so einbinden, dass sie dieselben App-Aktionen auslösen. So muss niemand nach Bedienelementen suchen, die sich nur per Geste bedienen lassen.

    @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()
        }
      }
    }

    Verwende FocusedValue, den Szenenzustand oder einen expliziten Auswahlzustand, wenn ein Befehl für das aktuell im Detailbereich angezeigte Element gelten soll. Falls ein Tastaturkurzbefehl an mehreren Stellen registriert würde, lass Codex die Zuständigkeit bündeln, damit es in der App nur einen eindeutigen Weg für diesen Befehl gibt.

    Einstellungen in Settings verwalten

    Verwende für App-Einstellungen eine eigene Szene vom Typ Settings und speichere dauerhafte Nutzereinstellungen mit @AppStorage. Das passt in der Regel besser zum Mac, als einen Einstellungs-Screen über die Navigation des Hauptfensters aufzurufen.

    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()
      }
    }

    App-Konzept im Prompt beschreiben, dann das Grundgerüst validieren

    Die besten Ergebnisse erzielst du, wenn du im Prompt das App-Konzept, die zentralen Inhaltsobjekte und die wichtigsten Aktionen nennst und Codex anschließend bittest, zuerst das Desktop-Grundgerüst für diesen Workflow zu entwickeln. Lass den Agenten einen kleinen Build-/Run-Test ausführen und die Szenenstruktur, die Einbindung der Befehle, die Zustandsverwaltung sowie alle Stellen zusammenfassen, an denen AppKit eingebunden werden musste.

    Praktische Tipps

    Seitenleiste nativ halten

    Verwende in den Zeilen der Seitenleiste ein Symbol, eine Titelzeile und höchstens eine kurze Zusatzzeile. Verschiebe umfangreichere Karten, Zähler und Metadaten in den Detailbereich oder Inspektor, damit die Liste in der Seitenleiste leicht zu überblicken bleibt.

    Einstellungen nicht im Haupt-Stack verstecken

    Wenn eine Einstellung für die gesamte App gilt, lass Codex das entsprechende Steuerelement unter Settings platzieren, den Wert mit @AppStorage speichern und einen Einstieg über das App-Menü bereitstellen, statt einen weiteren Einstellungs-Screen über die Navigation aufzurufen.

    AppKit nur für klar begrenzte Desktop-Lücken verwenden

    Wenn die Funktion Dialoge zum Öffnen und Speichern, die Steuerung des First Responders oder eine eigene NSView benötigt, setze AppKit nur als kleine Ergänzung zu einem von SwiftUI verwalteten Zustandsmodell ein, statt das gesamte Fenster in AppKit neu zu schreiben.

    Tech stack

    Need

    Grundgerüst für eine App mit geteilter Ansicht

    Default options

    NavigationSplitView, Listen mit .sidebar und inspector(isPresented:)

    Why it's needed

    Eine dauerhafte Seitenleiste, ein Detailbereich und ein Inspektor passen besser zu gängigen Layouts von Mac-Apps als eine Push-Navigation, die vorrangig für Touch-Bedienung ausgelegt ist.

    Need

    Desktop-Aktionen und -Einstellungen

    Default options

    commands, CommandMenu, Tastaturkurzbefehle und eine Szene vom Typ Settings

    Why it's needed

    Aktionen in der Menüleiste, Tastaturkurzbefehle und ein eigenes Einstellungsfenster sorgen dafür, dass sich die Funktion wie eine echte Mac-App anfühlt und nicht wie ein für den Desktop vergrößerter iOS-Screen.

    Need

    Zustandsverwaltung

    Default options

    @State, @SceneStorage, @AppStorage und explizite Auswahl-Bindings

    Why it's needed

    Codex kann dafür sorgen, dass die Auswahl in der Seitenleiste, die Sichtbarkeit des Inspektors und die Nutzereinstellungen vorhersehbar bleiben, ohne reflexartig ein View Model hinzuzufügen.

    Need

    Rückgriff auf native APIs

    Default options

    AppKit über schlanke Bridges mit NSViewRepresentable oder NSWindow

    Why it's needed

    Verwende AppKit nur, wenn sich ein bestimmtes Plattformverhalten mit SwiftUI nicht sauber umsetzen lässt. SwiftUI bleibt dabei die maßgebliche Quelle für den Szenen- und Auswahlzustand.

    Need Default options Why it's needed
    Grundgerüst für eine App mit geteilter Ansicht NavigationSplitView , Listen mit .sidebar und inspector(isPresented:) Eine dauerhafte Seitenleiste, ein Detailbereich und ein Inspektor passen besser zu gängigen Layouts von Mac-Apps als eine Push-Navigation, die vorrangig für Touch-Bedienung ausgelegt ist.
    Desktop-Aktionen und -Einstellungen commands , CommandMenu , Tastaturkurzbefehle und eine Szene vom Typ Settings Aktionen in der Menüleiste, Tastaturkurzbefehle und ein eigenes Einstellungsfenster sorgen dafür, dass sich die Funktion wie eine echte Mac-App anfühlt und nicht wie ein für den Desktop vergrößerter iOS-Screen.
    Zustandsverwaltung @State , @SceneStorage , @AppStorage und explizite Auswahl-Bindings Codex kann dafür sorgen, dass die Auswahl in der Seitenleiste, die Sichtbarkeit des Inspektors und die Nutzereinstellungen vorhersehbar bleiben, ohne reflexartig ein View Model hinzuzufügen.
    Rückgriff auf native APIs AppKit über schlanke Bridges mit NSViewRepresentable oder NSWindow Verwende AppKit nur, wenn sich ein bestimmtes Plattformverhalten mit SwiftUI nicht sauber umsetzen lässt. SwiftUI bleibt dabei die maßgebliche Quelle für den Szenen- und Auswahlzustand.

    Verwandte Anwendungsfälle