Communitygithub.com

tinycorn-studio/agent-skills

Render una vista previa/mockup de la interfaz ANTES de modificar el código UI (preview, mockup, vista previa de interfaz, diseño, bosquejo, demo de imagen, revisión de diseño). Úsalo cuando el usuario quiera ver o aprobar un diseño de UI antes de implementarlo, o al proponer cambios en la UI: renderiza fuera de pantalla a PNG, abre para aprobación, luego aplica. Úsalo siempre que un cambio afecte vistas/diseño/colores.

¿Qué es agent-skills?

Esta habilidad de agente AI, estándar de TinyCorn Studio, impone una regla fundamental: toda modificación de la interfaz de usuario debe contar con una previsualización en imagen que el usuario apruebe antes de aplicarse al código. Su flujo de trabajo comienza escribiendo un script de renderizado fuera de pantalla en Swift (tools/preview_<nombre>.swift), que genera directamente un PNG 2x sin necesidad de ejecutar la app completa. Luego, la imagen se abre para que el usuario la revise; si hay múltiples opciones de diseño, se renderizan 2–4 variantes lado a lado y se pide al usuario que elija (A/B/C/D). Solo después de la aprobación explícita se aplican los cambios al código. El script de previsualización se incluye en el commit de la funcionalidad. La habilidad incluye un esqueleto de código SwiftUI para macOS, consejos sobre errores comunes (como nombres de variables globales que chocan con modificadores de SwiftUI), y alternativas para otros entornos como web (Playwright) o CLI/TUI (ANSI). El principio rector es: imagen primero, código después, solo aplicar tras la aprobación del usuario.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tinycorn-studio/agent-skills/tree/HEAD/skills/ui-preview-first

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Vista previa de UI primero (Estándar de TinyCorn Studio)

Regla: todo cambio de interfaz debe tener una imagen de previsualización que el usuario apruebe antes de aplicar al código.

Flujo de trabajo

  1. Escribe un script de renderizado fuera de pantalla en tools/preview_<nombre>.swift — no es necesario ejecutar la app, renderiza directamente a PNG 2x.

  2. Ejecuta y abre la imagen para el usuario:

    swift tools/preview_<nombre>.swift ~/Desktop/<App>-<Nombre>-Preview.png
    open ~/Desktop/<App>-<Nombre>-Preview.png
    
  3. Pide aprobación — si hay múltiples opciones de diseño, renderiza 2–4 variantes lado a lado y pide al usuario que elija (A/B/C/D).

  4. Solo aplica después de que el usuario OK. Incluye el script de previsualización en el commit de la funcionalidad.

  5. Si el usuario solicita cambios: modifica el script, renderiza de nuevo, repite hasta que sea aprobado.

Esqueleto de código (SwiftUI, macOS)

import AppKit
import SwiftUI

struct PreviewRoot: View {
    var body: some View {
        // Construye una UI simulada usando los mismos componentes/colores de la app
        VStack { /* ... */ }
            .frame(width: 900, height: 600)
            .background(Color(nsColor: .windowBackgroundColor))
    }
}

let host = NSHostingView(rootView: PreviewRoot())
host.frame = NSRect(x: 0, y: 0, width: 900, height: 600)
host.layoutSubtreeIfNeeded()

let rep = host.bitmapImageRepForCachingDisplay(in: host.bounds)!
host.cacheDisplay(in: host.bounds, to: rep)

let png = rep.representation(using: .png, properties: [:])!
let out = CommandLine.arguments.count > 1
    ? CommandLine.arguments[1]
    : "preview.png"
try! png.write(to: URL(fileURLWithPath: out))
print("Escrito \(out)")

Errores comunes (ya ocurridos)

  • No usar nombres de variables globales que coincidan con modificadores/vistas de SwiftUI (ej. border) → error de sobrecarga. Usa borderColor.
  • Los encabezados se comparten entre métodos, por lo que no deben declararse duplicados en otro lugar del mismo archivo.
  • Renderizado 2x: establece rep.size o usa bitmapImageRepForCachingDisplay + cacheDisplay como se indica; no olvides layoutSubtreeIfNeeded() antes de cachear.
  • No uses screencapture/AppleScript para capturar la app — la máquina a menudo carece de permisos de Grabación de Pantalla (-1743). El renderizado fuera de pantalla es la única forma fiable.
  • Tema oscuro de la app: usa los mismos Color(nsColor:) y assets de la app para que la previsualización coincida con la realidad.
  • Guarda la imagen en ~/Desktop/ para que el usuario la encuentre fácilmente, con nombre tipo <App>-<Feature>-Preview.png.

Fuera de SwiftUI

  • Web: abre un HTML mockup con el navegador y captúralo, o usa Playwright para hacer una captura de pantalla.
  • CLI/TUI: renderiza con ANSI en la terminal o describe texto con colores.

El principio general no cambia: imagen primero, código después, el usuario aprueba y luego se aplica.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados