For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme
Codex

Codex use case

Crea la estructura de una app para Mac

Usa Codex para crear en SwiftUI la estructura de una app nativa para Mac con barra lateral, panel de detalles, inspector, comandos y configuración.

Difficulty Advanced
Time horizon 1h

Usa Codex y el complemento Build macOS Apps para convertir tu idea en una app nativa de escritorio con NavigationSplitView, mantener estable la selección en la barra lateral, agregar menús, barras de herramientas y atajos de teclado, y trasladar las preferencias a una escena Settings dedicada.

Best for

  • Ideas para nuevas apps de Mac o propuestas pensadas inicialmente para iPad o la web que necesitan una interfaz de escritorio con navegación persistente, menús, barras de herramientas y atajos de teclado
  • Herramientas de edición, gestión de bibliotecas, administración o revisión en las que la selección en la barra lateral determina qué muestra el panel de detalles y el inspector da acceso a metadatos o acciones secundarias
  • Apps para Mac que necesitan una ventana de preferencias propia en lugar de abrir la configuración como una pantalla más en la pila de navegación principal

Contents

    ← All use cases

    Crea la estructura de una app para Mac

    Usa Codex para crear en SwiftUI la estructura de una app nativa para Mac con barra lateral, panel de detalles, inspector, comandos y configuración.

    Usa Codex y el complemento Build macOS Apps para convertir tu idea en una app nativa de escritorio con NavigationSplitView, mantener estable la selección en la barra lateral, agregar menús, barras de herramientas y atajos de teclado, y trasladar las preferencias a una escena Settings dedicada.

    Advanced
    1h

    Usa Codex y el complemento Build macOS Apps para convertir tu idea en una app nativa de escritorio con NavigationSplitView, mantener estable la selección en la barra lateral, agregar menús, barras de herramientas y atajos de teclado, y trasladar las preferencias a una escena Settings dedicada.

    Advanced
    1h

    Best for

    • Ideas para nuevas apps de Mac o propuestas pensadas inicialmente para iPad o la web que necesitan una interfaz de escritorio con navegación persistente, menús, barras de herramientas y atajos de teclado
    • Herramientas de edición, gestión de bibliotecas, administración o revisión en las que la selección en la barra lateral determina qué muestra el panel de detalles y el inspector da acceso a metadatos o acciones secundarias
    • Apps para Mac que necesitan una ventana de preferencias propia en lugar de abrir la configuración como una pantalla más en la pila de navegación principal

    Skills & Plugins

    • Usa las habilidades sobre patrones de SwiftUI para macOS, gestión de ventanas, integración con AppKit y compilación y ejecución. Con ellas puedes crear interfaces con barra lateral, panel de detalles e inspector, conectar los menús y la configuración con sus acciones y validar la app en cada iteración, empezando por su estructura.
    Skill Why use it
    Build macOS Apps Usa las habilidades sobre patrones de SwiftUI para macOS, gestión de ventanas, integración con AppKit y compilación y ejecución. Con ellas puedes crear interfaces con barra lateral, panel de detalles e inspector, conectar los menús y la configuración con sus acciones y validar la app en cada iteración, empezando por su estructura.

    Starter prompt

    Usa el complemento Build macOS Apps para convertir [describe your app idea] en una app nativa para Mac cuya estructura en SwiftUI incluya una barra lateral, un panel de detalles, un inspector, comandos y configuración. Restricciones: - Elige primero el modelo de escenas. Da preferencia a `WindowGroup` para la ventana principal y agrega una escena `Settings` dedicada a las preferencias. - Organiza la interfaz principal en torno a `NavigationSplitView`, con un estado de selección explícito, una lista nativa de estilo `.sidebar`, un panel de detalles y un panel `inspector(isPresented:)` para metadatos o controles secundarios. - Mantén las filas de la barra lateral sencillas y de estilo nativo. Usa un ícono, un título de una línea y, como máximo, una línea secundaria breve. Evita colocar cada fila dentro de una tarjeta personalizada grande, salvo que haya una razón de peso para hacerlo en esta app. - Ofrece acceso a las acciones importantes mediante `commands` de la escena, `CommandMenu`, botones de la barra de herramientas y atajos de teclado. Evita que un gesto sea la única forma de acceder a una acción crítica. - Usa `@SceneStorage` para el estado de la interfaz de cada ventana y `@AppStorage` para las preferencias. Para coordinar la barra lateral y el panel de detalles, usa enlaces explícitos al estado de selección que gestiona la vista padre. - Da preferencia a los materiales del sistema, los colores semánticos y los fondos estándar de la barra lateral. Aplica estilos personalizados solo a las tarjetas de contenido del panel de detalles o del inspector cuando sea necesario. - Usa un puente con AppKit de alcance limitado solo si SwiftUI no permite implementar con claridad un comportamiento específico del escritorio. - Crea o actualiza `script/build_and_run.sh`, realiza la comprobación mínima que permita validar la compilación y la ejecución e indícame los comandos exactos que usaste. Entrega lo siguiente: - la estructura de escenas y las vistas principales de la barra lateral, el panel de detalles y el inspector - la conexión de los menús, la barra de herramientas y los atajos de teclado con sus acciones - la escena Settings y el modelo de estado de las preferencias - cualquier puente con AppKit que hayas agregado y el motivo por el que fue necesario - los pasos para validar la compilación y la ejecución y cualquier medida adicional que recomiendes para mejorar la experiencia de uso en el escritorio
    Usa el complemento Build macOS Apps para convertir [describe your app idea] en una app nativa para Mac cuya estructura en SwiftUI incluya una barra lateral, un panel de detalles, un inspector, comandos y configuración. Restricciones: - Elige primero el modelo de escenas. Da preferencia a `WindowGroup` para la ventana principal y agrega una escena `Settings` dedicada a las preferencias. - Organiza la interfaz principal en torno a `NavigationSplitView`, con un estado de selección explícito, una lista nativa de estilo `.sidebar`, un panel de detalles y un panel `inspector(isPresented:)` para metadatos o controles secundarios. - Mantén las filas de la barra lateral sencillas y de estilo nativo. Usa un ícono, un título de una línea y, como máximo, una línea secundaria breve. Evita colocar cada fila dentro de una tarjeta personalizada grande, salvo que haya una razón de peso para hacerlo en esta app. - Ofrece acceso a las acciones importantes mediante `commands` de la escena, `CommandMenu`, botones de la barra de herramientas y atajos de teclado. Evita que un gesto sea la única forma de acceder a una acción crítica. - Usa `@SceneStorage` para el estado de la interfaz de cada ventana y `@AppStorage` para las preferencias. Para coordinar la barra lateral y el panel de detalles, usa enlaces explícitos al estado de selección que gestiona la vista padre. - Da preferencia a los materiales del sistema, los colores semánticos y los fondos estándar de la barra lateral. Aplica estilos personalizados solo a las tarjetas de contenido del panel de detalles o del inspector cuando sea necesario. - Usa un puente con AppKit de alcance limitado solo si SwiftUI no permite implementar con claridad un comportamiento específico del escritorio. - Crea o actualiza `script/build_and_run.sh`, realiza la comprobación mínima que permita validar la compilación y la ejecución e indícame los comandos exactos que usaste. Entrega lo siguiente: - la estructura de escenas y las vistas principales de la barra lateral, el panel de detalles y el inspector - la conexión de los menús, la barra de herramientas y los atajos de teclado con sus acciones - la escena Settings y el modelo de estado de las preferencias - cualquier puente con AppKit que hayas agregado y el motivo por el que fue necesario - los pasos para validar la compilación y la ejecución y cualquier medida adicional que recomiendes para mejorar la experiencia de uso en el escritorio

    Empieza por el modelo de escenas de Mac

    Este caso de uso te ayuda a convertir una idea en la estructura básica de una app para Mac diseñada desde el principio para el escritorio, sin tener que adaptar una pila de navegación pensada para pantallas táctiles. Pídele a Codex que elija primero el modelo de escenas y luego diseñe la ventana principal con una barra lateral que conserve la selección, un panel de detalles y un inspector para controles secundarios o metadatos.

    Interfaz nativa de una app para Mac con un elemento seleccionado en la barra lateral y su contenido en el panel de detalles

    Usa el complemento Build macOS Apps cuando quieras que Codex aplique esa estructura de escritorio y use principalmente la línea de comandos para compilar y ejecutar la app. Su habilidad de patrones de SwiftUI para macOS es útil para diseñar escenas, barras laterales, inspectores, comandos y ajustes, y para crear pequeñas integraciones con AppKit cuando SwiftUI no cubre un comportamiento específico de Mac.

    Crea una barra lateral, un panel de detalles y un inspector

    Dale preferencia a NavigationSplitView cuando convenga mantener la navegación visible y conservar el elemento seleccionado. Usa filas nativas y sencillas en la barra lateral, deja que esta use los fondos del sistema y reserva las tarjetas personalizadas o los conjuntos extensos de metadatos para el panel de detalles o el inspector.

    import SwiftUI
    
    struct Item: Identifiable, Hashable {
      let id: String
      let title: String
      let systemImage: String
    }
    let items = [Item(id: "notes", title: "Notes", systemImage: "note.text"), Item(id: "photos", title: "Photos", systemImage: "photo")]
    
    struct ItemDetailView: View {
      let selection: String?
      var body: some View { Text(selection ?? "Select an item").frame(maxWidth: .infinity, maxHeight: .infinity) }
    }
    struct ItemInspectorView: View {
      let selection: String?
      var body: some View { Text("Metadata: \(selection ?? "No selection")").padding().frame(minWidth: 220) }
    }
    @MainActor final class LibraryStore: ObservableObject {
      @Published var entries = items
      @Published var selection: String?
      @Published var showInspector = true
      func addItem() {
        let item = Item(id: UUID().uuidString, title: "New Item", systemImage: "doc")
        entries.append(item)
        selection = item.id
      }
    }
    
    struct LibraryRootView: View {
      @StateObject private var store = LibraryStore()
      @SceneStorage("LibraryRootView.selection") private var savedSelection: Item.ID?
      @SceneStorage("LibraryRootView.showInspector") private var savedShowInspector = true
    
      var body: some View {
        NavigationSplitView {
          List(selection: $store.selection) {
            ForEach(store.entries) { item in
              Label(item.title, systemImage: item.systemImage)
                .tag(item.id)
            }
          }
          .listStyle(.sidebar)
          .navigationTitle("Library")
        } detail: {
          ItemDetailView(selection: store.selection)
            .inspector(isPresented: $store.showInspector) {
              ItemInspectorView(selection: store.selection)
            }
        }
        .focusedSceneObject(store)
        .onAppear {
          store.selection = savedSelection
          store.showInspector = savedShowInspector
        }
        .onChange(of: store.selection) { _, selection in
          savedSelection = selection
        }
        .onChange(of: store.showInspector) { _, showInspector in
          savedShowInspector = showInspector
        }
      }
    }

    Si la app necesita tamaños poco habituales para los paneles de una vista dividida, coordinación de ventanas a bajo nivel o un comportamiento personalizado en la cadena de respuesta, pídele a Codex que conserve la estructura de SwiftUI y añada solo la integración con AppKit indispensable para ese caso.

    Incorpora comandos, barras de herramientas y atajos de teclado en la interfaz de escritorio

    Los usuarios de Mac deberían poder encontrar las acciones importantes en la barra de menús y en la barra de herramientas, y descubrir sus atajos de teclado. Pídele a Codex que vincule los commands de la escena, las opciones de menú que dependen del contexto y los botones de la barra de herramientas con las mismas acciones de la app. Así, quienes usen la app en el escritorio no tendrán que buscar controles que solo se activan con gestos.

    @main
    struct LibraryApp: App {
      @FocusedObject private var store: LibraryStore?
      var body: some Scene {
        WindowGroup {
          LibraryRootView()
        }
        .commands {
          CommandMenu("Library") {
            Button("New Item") {
              store?.addItem()
            }
            .keyboardShortcut("n")
            .disabled(store == nil)
    
            Button("Toggle Inspector") {
              store?.showInspector.toggle()
            }
            .keyboardShortcut("i", modifiers: [.command, .option])
            .disabled(store == nil)
          }
        }
    
        Settings {
          LibrarySettingsView()
        }
      }
    }

    Usa FocusedValue, el estado de la escena o un estado explícito de selección cuando un comando deba aplicarse al elemento que se muestra en el panel de detalles. Si el mismo atajo de teclado pudiera quedar registrado en varios lugares, pídele a Codex que centralice su gestión para que la app tenga una sola vía para ejecutar el comando.

    Guarda las preferencias en Settings

    Usa una escena Settings dedicada a las preferencias de la app y guarda con @AppStorage las elecciones del usuario que deban conservarse entre sesiones. En Mac, esto suele funcionar mejor que añadir una pantalla de ajustes a la pila de navegación de la ventana principal.

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

    Describe la idea de la app en el prompt y valida su estructura

    Para aprovechar esta página, describe en el prompt la idea de la app, los principales objetos de contenido y las acciones principales. Luego pídele a Codex que empiece por crear la estructura de escritorio en torno a ese flujo de trabajo. Pídele al agente que haga una prueba breve de compilación y ejecución y que resuma cómo se organizan las escenas, cómo se conectan los comandos con las acciones, qué componente gestiona cada estado y qué casos requirieron una integración con AppKit.

    Consejos prácticos

    Mantén el diseño nativo de la barra lateral

    Usa un ícono, una línea para el título y, como máximo, una línea secundaria breve en cada fila de la barra lateral. Mueve las tarjetas con más contenido, los contadores y los metadatos al panel de detalles o al inspector para que sea fácil revisar la lista de un vistazo.

    Evita ocultar los ajustes en la pila de navegación principal

    Si una preferencia del usuario afecta a toda la app, pídele a Codex que coloque el control en Settings, guarde la preferencia con @AppStorage y permita acceder a los ajustes desde el menú de la app, en lugar de añadir otra pantalla a la pila de navegación.

    Reserva AppKit para necesidades puntuales del escritorio

    Si la función necesita mostrar paneles para abrir o guardar archivos, controlar qué objeto recibe primero los eventos o usar una NSView personalizada, limita la integración con AppKit a ese caso y deja que SwiftUI gestione el modelo de estado, en lugar de reescribir toda la ventana en AppKit.

    Tech stack

    Need

    Estructura de la app con vista dividida

    Default options

    NavigationSplitView, listas de estilo .sidebar e inspector(isPresented:)

    Why it's needed

    Una barra lateral persistente, un panel de detalles y un inspector se ajustan mejor a las interfaces habituales de las apps para Mac que la navegación por pantallas sucesivas pensada para dispositivos táctiles.

    Need

    Acciones y configuración de escritorio

    Default options

    commands, CommandMenu, atajos de teclado y una escena Settings

    Why it's needed

    Las acciones de la barra de menús, los atajos de teclado y una ventana de configuración propia hacen que la función se sienta como parte de una app nativa para Mac, en lugar de parecer una pantalla de iOS ampliada para el escritorio.

    Need

    Quién gestiona el estado

    Default options

    @State, @SceneStorage, @AppStorage y enlaces explícitos al estado de selección

    Why it's needed

    Codex puede gestionar de forma predecible la selección en la barra lateral, la visibilidad del inspector y las preferencias del usuario sin agregar un modelo de vista por costumbre.

    Need

    Alternativas nativas con AppKit

    Default options

    AppKit mediante puentes de alcance limitado con NSViewRepresentable o NSWindow

    Why it's needed

    Usa AppKit solo para los comportamientos de la plataforma que SwiftUI no permita implementar con claridad. Mantén SwiftUI como fuente de verdad para el estado de la escena y de la selección.

    Need Default options Why it's needed
    Estructura de la app con vista dividida NavigationSplitView , listas de estilo .sidebar e inspector(isPresented:) Una barra lateral persistente, un panel de detalles y un inspector se ajustan mejor a las interfaces habituales de las apps para Mac que la navegación por pantallas sucesivas pensada para dispositivos táctiles.
    Acciones y configuración de escritorio commands , CommandMenu , atajos de teclado y una escena Settings Las acciones de la barra de menús, los atajos de teclado y una ventana de configuración propia hacen que la función se sienta como parte de una app nativa para Mac, en lugar de parecer una pantalla de iOS ampliada para el escritorio.
    Quién gestiona el estado @State , @SceneStorage , @AppStorage y enlaces explícitos al estado de selección Codex puede gestionar de forma predecible la selección en la barra lateral, la visibilidad del inspector y las preferencias del usuario sin agregar un modelo de vista por costumbre.
    Alternativas nativas con AppKit AppKit mediante puentes de alcance limitado con NSViewRepresentable o NSWindow Usa AppKit solo para los comportamientos de la plataforma que SwiftUI no permita implementar con claridad. Mantén SwiftUI como fuente de verdad para el estado de la escena y de la selección.

    Related use cases