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).
| Flag | Descripción |
|---|---|
--name <text> | Nombre visible para el nuevo proyecto (por defecto: Untitled) |
--api-key <key> | Sobrescribe la API key |
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.
| Flag | Descripción |
|---|---|
--prompt <text> | (requerido) Descripción del proyecto a generar |
--template <id> | Usa un proyecto existente como plantilla |
--wait | Espera a que el proyecto termine de generarse |
--api-key <key> | Sobrescribe la API key |
status
Verifica el estado de un job de generación.
| Flag | Descripción |
|---|---|
--wait | Consulta hasta que el job termine o falle |
--api-key <key> | Sobrescribe la API key |
list
Lista tus proyectos.
| Flag | Descripción |
|---|---|
--published | Mostrar solo proyectos publicados |
--limit <n> | Máximo de resultados (por defecto: 20, máximo: 100) |
--api-key <key> | Sobrescribe la API key |
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.
| Flag | Descripció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.
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.
| Flag | Descripció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 |
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.
| Flag | Descripció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 |
--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.
| Flag | Descripció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.
| Flag | Descripción |
|---|---|
--hostname <host> | (requerido) Dominio a conectar, sin protocolo ni www (por ejemplo, example.com) |
--api-key <key> | Sobrescribe la API key |
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.
| Flag | Descripción |
|---|---|
--name <text> | (requerido) Nombre visible para la nueva diapositiva |
--after <slide-id> | Inserta después de esta diapositiva. Omite para agregar al final |
--editing | Muestra inmediatamente el gradiente de carga en la nueva diapositiva. Llama a slides finish-editing cuando termines |
--api-key <key> | Sobrescribe la API key |
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.
| Flag | Descripció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 |
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.
| Flag | Descripció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 |
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.
| Flag | Descripció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.
| Flag | Descripción |
|---|---|
--mobile | Captura el diseño móvil en lugar del de escritorio |
--api-key <key> | Sobrescribe la API key |
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.
| Flag | Descripció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 |
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.
| Flag | Descripció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) |
~/.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.