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).
Salida:
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.
Salida:
status
Verifica el estado de un job de generación.
Ejemplos:
list
Lista tus proyectos.
Ejemplos:
get
Obtiene los detalles de un proyecto específico.
rename
Renombra un proyecto. Cambia solo el nombre visible; el slug y las URLs permanecen iguales.
duplicate
Crea una copia completa de un proyecto, incluidas todas sus diapositivas. La copia obtiene su propio slug y una nueva URL sin publicar.
publish
Publica la última versión de un proyecto en su URL en vivo.
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).
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.
Ejemplos:
url get
Obtiene la configuración de URL actual de un proyecto más los subdominios y dominios disponibles para cambiar.
url set
Cambia la ruta, cambia de subdominio o apunta el proyecto a un dominio personalizado. Requiere un plan de pago.
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.
domains create
Conecta un dominio personalizado y devuelve los registros DNS a agregar. Requiere un plan de pago.
Ejemplos:
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.
slides list
Lista todas las diapositivas de un proyecto.
slides get
Lee los archivos fuente de una diapositiva (face.tsx, face.content.json, face.controls.json).
slides create
Crea una nueva diapositiva vacía. Devuelve el ID de la nueva diapositiva.
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.
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.
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.
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.
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.
Ejemplos:
Referencia de archivos de diapositiva
Cada diapositiva está compuesta por tres archivos:face.tsx (componente React)
- 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:
TextContentdesde@/components/ui/text-content,Icondesde@/components/ui/icon
face.content.json (contenido editable)
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 conblocks.key.rows.map(...)
face.controls.json (controles del editor)
slider:{ "type": "slider", "min": 0, "max": 100, "step": 1, "value": 50 }switch:{ "type": "switch", "value": true }selector:{ "type": "selector", "options": ["A", "B"], "value": "A" }
controls.key.value
login
Inicia sesión y guarda una API key.
Ejemplos:
~/.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.