Saltar al contenido principal

new

Crea un nuevo proyecto en blanco. Devuelve el projectSlug y la editorUrl. Agrega diapositivas con faces slides create + faces slides update. El proyecto se crea bajo el equipo al que está asociada tu API key (consulta Autenticación).
Opciones:
FlagDescripción
--name <text>Nombre visible para el nuevo proyecto (por defecto: Untitled)
--api-key <key>Sobrescribe la API key
Salida:
Ejemplos:

generate

Genera una nueva presentación interactiva a partir de un prompt de texto. Describe lo que quieres (un pitch, portafolio, guía o propuesta) y Faces se encarga del contenido, las animaciones y el diseño.
Opciones:
FlagDescripción
--prompt <text>(requerido) Descripción del proyecto a generar
--template <id>Usa un proyecto existente como plantilla
--waitEspera a que el proyecto termine de generarse
--api-key <key>Sobrescribe la API key
Salida:
Ejemplos:

status

Verifica el estado de un job de generación.
Opciones:
FlagDescripción
--waitConsulta hasta que el job termine o falle
--api-key <key>Sobrescribe la API key
Ejemplos:

list

Lista tus proyectos.
Opciones:
FlagDescripción
--publishedMostrar solo proyectos publicados
--limit <n>Máximo de resultados (por defecto: 20, máximo: 100)
--api-key <key>Sobrescribe la API key
Ejemplos:

get

Obtiene los detalles de un proyecto específico.
Ejemplos:

rename

Renombra un proyecto. Cambia solo el nombre visible; el slug y las URLs permanecen iguales.
Opciones:
FlagDescripción
--name <text>(requerido) Nuevo nombre visible
--api-key <key>Sobrescribe la API key

duplicate

Crea una copia completa de un proyecto, incluidas todas sus diapositivas. La copia obtiene su propio slug y una nueva URL sin publicar.
Ejemplos:

publish

Publica la última versión de un proyecto en su URL en vivo.
Ejemplos:

unpublish

Retira de la web un proyecto publicado. El proyecto y sus diapositivas se conservan y se pueden volver a publicar más tarde.

config get

Lee el project.config.json de un proyecto, incluidas sus opciones de diseño y los tokens de diseño compartidos (paleta y fuentes).
Ejemplos:

config update

Combina claves en project.config.json. Úsalo para definir los tokens de diseño del proyecto. Solo se modifican las claves que pasas; el resto se conserva.
Opciones:
FlagDescripción
--config <json-or-file>(requerido) Un objeto JSON o la ruta a un archivo JSON con las claves de configuración a combinar
--api-key <key>Sobrescribe la API key
Ejemplos:

url get

Obtiene la configuración de URL actual de un proyecto más los subdominios y dominios disponibles para cambiar.
Ejemplos:

url set

Cambia la ruta, cambia de subdominio o apunta el proyecto a un dominio personalizado. Requiere un plan de pago.
Opciones:
FlagDescripción
--path <p>(requerido) Segmento de ruta después del hostname (usa "" para la raíz)
--subdomain-id <id>Subdominio en el que alojar (de faces url get)
--domain-id <id>Dominio personalizado en el que alojar (de faces url get o faces domains create)
--api-key <key>Sobrescribe la API key
Proporciona exactamente uno de --subdomain-id o --domain-id. Ejemplos:

subdomains create

Crea un subdominio personalizado para el equipo del proyecto y luego conéctalo con faces url set. Requiere un plan de pago.
Opciones:
FlagDescripción
--subdomain <label>(requerido) Etiqueta del subdominio (letras minúsculas, números, guiones)
--api-key <key>Sobrescribe la API key

domains create

Conecta un dominio personalizado y devuelve los registros DNS a agregar. Requiere un plan de pago.
Opciones:
FlagDescripción
--hostname <host>(requerido) Dominio a conectar, sin protocolo ni www (por ejemplo, example.com)
--api-key <key>Sobrescribe la API key
Ejemplos:
Una vez que el DNS se propague, ejecuta faces url set <slug> --path <p> --domain-id <id>.

teams list

Lista los equipos a los que tu API key puede acceder. El equipo personal se marca con isPersonal.
Ejemplos:

slides list

Lista todas las diapositivas de un proyecto.
Ejemplos:

slides get

Lee los archivos fuente de una diapositiva (face.tsx, face.content.json, face.controls.json).
Ejemplos:

slides create

Crea una nueva diapositiva vacía. Devuelve el ID de la nueva diapositiva.
Opciones:
FlagDescripción
--name <text>(requerido) Nombre visible para la nueva diapositiva
--after <slide-id>Inserta después de esta diapositiva. Omite para agregar al final
--editingMuestra inmediatamente el gradiente de carga en la nueva diapositiva. Llama a slides finish-editing cuando termines
--api-key <key>Sobrescribe la API key
Ejemplos:

slides reorder

Reordena todas las diapositivas de un proyecto a un orden dado en una sola llamada atómica. La lista --ids debe contener exactamente los IDs de las diapositivas existentes del proyecto, en el orden final deseado.
Opciones:
FlagDescripción
--ids <slide-ids>(requerido) Lista ordenada completa, separada por comas, de todos los IDs de diapositiva existentes
--api-key <key>Sobrescribe la API key
Ejemplos:

slides update

Actualiza los archivos fuente de una diapositiva. Solo se modifican los archivos proporcionados. El código se valida antes de guardar, devuelve errores si no compila.
Opciones:
FlagDescripción
--tsx <file>Ruta al archivo face.tsx (o código inline)
--content <file>Ruta al archivo face.content.json (o JSON inline)
--controls <file>Ruta al archivo face.controls.json (o JSON inline)
--api-key <key>Sobrescribe la API key
Ejemplos:

slides start-editing

Muestra un indicador de carga en el editor mientras editas una diapositiva. Llámalo antes de hacer cambios, y siempre llama a finish-editing cuando termines.
Opciones:
FlagDescripción
--api-key <key>Sobrescribe la API key

slides finish-editing

Limpia el indicador de carga de una diapositiva. Llama a este comando siempre después de editar, incluso si la edición falló.

slides screenshot

Captura una captura de pantalla JPEG de una diapositiva tal como se renderiza actualmente y devuelve una URL pública de CDN. Útil para verificar visualmente una diapositiva después de editarla.
Opciones:
FlagDescripción
--mobileCaptura el diseño móvil en lugar del de escritorio
--api-key <key>Sobrescribe la API key
Ejemplos:

slides guide

Imprime la referencia de autoría de diapositivas, la misma guía que devuelven el server MCP y la API. Cubre la estructura de face.tsx, los tipos de bloque de face.content.json, los tipos de control de face.controls.json, tipografía, fuentes, CSS y ejemplos de código. Léelo antes de escribir código de diapositivas por primera vez.
Opciones:
FlagDescripción
[slug]Slug de proyecto opcional. Adapta la guía al tamaño del lienzo móvil de ese proyecto
--api-key <key>Sobrescribe la API key
Ejemplos:

Referencia de archivos de diapositiva

Cada diapositiva está compuesta por tres archivos:

face.tsx (componente React)

Reglas:
  • Debe exportar por defecto un componente React
  • El div externo debe tener w-full h-full (lienzo: 1920×1080 en escritorio, 384×683 en móvil)
  • Usa Tailwind CSS y container queries (@sm:, @md:, @lg:, @xl:) en lugar de media queries
  • Nunca incrustes texto en el código, guarda todo el texto visible para el usuario en face.content.json
  • Puedes importar cualquier paquete npm (se resuelve automáticamente, no necesitas instalarlo)
  • Disponibles: react, motion/react (Framer Motion), lucide-react, @base-ui/react/*
  • Componentes de UI: TextContent desde @/components/ui/text-content, Icon desde @/components/ui/icon

face.content.json (contenido editable)

Tipos de bloque:
  • text: { "type": "text", "content": "HTML string" }, renderiza con <TextContent content={blocks.key.content} />
  • image: { "type": "image", "src": "url | null" }, renderiza con <img src={blocks.key.src} />
  • icon: { "type": "icon", "name": "lucide-icon-name" }, renderiza con <Icon name={blocks.key.name} />
  • table: { "type": "table", "columns": [...], "rows": [...] }, itera con blocks.key.rows.map(...)

face.controls.json (controles del editor)

Tipos de control:
  • slider: { "type": "slider", "min": 0, "max": 100, "step": 1, "value": 50 }
  • switch: { "type": "switch", "value": true }
  • selector: { "type": "selector", "options": ["A", "B"], "value": "A" }
Accede en face.tsx con: controls.key.value

login

Inicia sesión y guarda una API key.
Opciones:
FlagDescripción
--team <slug-or-id>Asocia la API key a un equipo específico (por defecto: tu equipo personal)
--api-url <url>URL base de la API (por defecto: FACES_API_URL o https://faces.app)
Ejemplos:
Abre tu navegador para autenticarte, luego guarda la key en ~/.config/faces/credentials.json. El valor de --team puede ser un slug o un id de equipo (consulta GET /api/v1/teams). Omite --team para asociar la key a tu equipo personal.