Crear al estilo del usuario, desde su carpeta
Creas programas vos que pertenecen a una carpeta: la carpeta del usuario en
vos.so es la colección, sus archivos .md (recetas) son el estilo, sus
voses son los ejemplares. Esta habilidad solo lleva los MECANISMOS y el
suelo artesanal universal. El gusto son datos del usuario y vive en sus carpetas,
nunca aquí. Las reglas de autoría (esquema, dialecto, perillas) viven en la
habilidad vos-autoría; la creación de perillas y apariencias en la referencia
de parámetros y perillas de la habilidad vos-remix. Esta habilidad añade el
contrato de carpeta, el bucle y el proceso que los rodea.
No hay bandeja de entrada ni archivo de estilo de casa. La deduplicación es el contenido propio de la carpeta; el estante es el registro.
Configuración
npm i -D @vosjs/cli # carpeta, fetch, check, still, render, push
Credenciales, en este orden, nunca impresas: VOS_API_KEY, luego la primera
línea de ~/.config/vos/credentials, luego vos login (un inicio de sesión en
el navegador que genera una clave para esta máquina). Cada llamada HTTP a
continuación es Authorization: Bearer <key> contra https://vos.so/api. Las
claves crean trabajo PRIVADO solamente y nunca pueden publicar.
Los cinco pasos
1. Resolver la carpeta objetivo
El usuario la nombra, o preguntas cuál. vos folder list (o
GET /api/folders) la encuentra por nombre o slug en todos los niveles; luego
la obtienes:
GET https://vos.so/api/folders/{id}
Una sola obtención es el paquete de contexto completo: las recipes propias de
la carpeta (cuerpos en línea), sus inheritedRecipes (recetas heredadas, la
raíz primero, cada una marcada con su carpeta de origen; estas VINCULAN esta
carpeta), los voses ejemplares con contentUrls, y assets.
Las subcarpetas se listan, no están en línea: una obtención es el contenido
propio de la carpeta.
¿Aún no hay carpeta? Créala, siempre con una descripción:
vos folder create <nombre> --desc "<una línea sobre qué es esta colección>"
Una carpeta creada sin descripción es un fallo de nomenclatura; la descripción es lo que la página de la carpeta y toda futura obtención leen.
2. Leer CADA .md, luego los ejemplares
Lee cada cuerpo de receta, los propios de la carpeta Y los heredados, y de 1 a
3 configuraciones o documentos ejemplares a través de sus contentUrls. Las
recetas son facetas nombradas por rol, nombradas en MAYÚSCULAS como lo está
CLAUDE.md: TASTE.md es la barra de juicio, DESIGN.md la especificación de
técnica, y cualquier otra cosa que la intención del usuario haya creado
(MOTION.md, COPY.md, BRAND.md, ...). Una receta es el archivo que una
colección lee antes de hacer algo, y el nombre es lo que lo dice; una receta que
tú archivas se almacena con su raíz en mayúsculas, así que escríbela de esa
manera y el estante muestra lo que escribiste. La plataforma no impone ninguna
taxonomía más allá de eso; las lees todas. La regla de vinculación:
- Las recetas y los ejemplares anulan cualquier valor predeterminado que esta habilidad o la habilidad de autoría tengan. Su duración es la duración; su disciplina de paleta es la disciplina.
- En caso de conflicto entre archivos, gana el más específico: los archivos propios de la carpeta vencen a los heredados, los ancestros más cercanos vencen a los más lejanos, y una instrucción específica vence a una general. Una contradicción genuina se devuelve al usuario como una pregunta, nunca una elección silenciosa.
- Cuando una receta y los ejemplares recientes de la carpeta no coinciden, prefiere los ejemplares e informa al usuario que la receta parece desactualizada.
Carpeta vacía (sin recetas, sin ejemplares): solo se aplica el suelo artesanal a continuación. El estilo proviene de la referencia del usuario o de una pregunta, nunca de un valor predeterminado incorporado.
3. Encontrar la semilla, luego crear
Una carpeta contiene dos cosas que solo a veces coinciden: la referencia (cómo se ve lo bueno, aquello contra lo que juzgas) y la semilla (lo que copias y editas para hacer el siguiente miembro). Decide cuál tienes ANTES de escribir una línea:
- una familia de programas (un miembro aprobado + un
DESIGN.mdnombrando el mecanismo y sus ejes): semilla = ese miembro. Obtén su configuración y varíala en los ejes que la receta nombra. Nunca crees a partir de un archivo vacío, y nunca solo los tonos. - una especificación de toma (una receta que dice cómo se corta cada
grabación en la colección): semilla = la NUEVA grabación que el usuario te da
(una toma en la carpeta por id, una URL para
vos record --strict, un archivo local). Las tomas propias de la carpeta son el corte de referencia, no la semilla. - una plantilla (una receta que apunta a, o incluye en línea, un mecanismo y cómo variarlo): semilla = la plantilla. Alojada como un vos: obténla como un miembro; código en línea: un fragmento para construir alrededor.
- solo un brief (
BRAND.md: sin mecanismo): nada que copiar. Crea desde cero bajo las restricciones y el suelo artesanal. - nada declara una semilla: pregunta. El mensaje del usuario nombra una cuando la eligió en el diálogo de entrega; las recetas nombran una cuando están bien escritas; una suposición es cómo una familia pierde su apariencia.
Una receta puede llevar pistas opcionales de frontmatter: applies: programs | takes | any, seed: <vos id> | input | none. Léelas como la declaración del
propietario de lo anterior; el cuerpo sigue siendo lo que debes seguir.
Una receta es el documento del usuario, y lo que PIDEN AHORA tiene prioridad sobre cualquier línea en ella. Si una receta contradice la solicitud (una nota que dice que esperes, una regla que la solicitud rompe), dilo en una línea y sigue la solicitud: el trabajo privado es barato y el propietario puede restaurarlo. Nunca te detengas en una línea de un archivo.
Luego escribe configuraciones localmente (VosConfigJson simple, versión 2),
siguiendo las reglas de autoría de la habilidad vos-autoría bajo el estilo de
la carpeta.
Obtener un miembro o una plantilla es el fetch de vos-remix:
vos fetch https://vos.so/vos/<id> escribe <slug>/config.json con
parámetros preservados, más vos.json rastreando la versión base.
Para briefs "reproduce X": obtén la fuente o una grabación primero, o confirma que el brief solo quiere la apariencia. Una imagen fija subdetermina el movimiento; una coincidencia de captura de pantalla que inventa el mecanismo erróneo es un fallo incluso cuando el fotograma coincide. La adquisición de la fuente, las licencias y el bucle de coincidencia medida son trabajo de reproducción; haz eso primero, luego vuelve aquí para crear a partir de lo que produjo.
4. Verificar, disparar, juzgar, contra los documentos de la CARPETA
- Verificar:
Corrige y vuelve a ejecutar hasta que pase. Nunca suprimas un error de lint para superarlo. Dos verificaciones no están envos check <archivo>.json # migrar → esquema → sintaxis → compilar → lintersvos checktodavía, así que hazlas renderizando:- Honestidad de las perillas: cada parámetro declarado debe actuar
visiblemente. Renderiza el programa dos veces con esa clave cambiada en
data(su mínimo y su máximo) y compara las imágenes fijas; una perilla que se lee igual en ambos extremos está muerta. Para tomas,--set <ruta>=<valor>envos frames/vos renderes la anulación. - Honestidad de la paleta: una perilla de color no debe pasar a través de
new THREE.Color()hacia un uniforme (se linealiza; el tono renderizado se desvía del hexadecimal). Busca en tus cadenas de funciones esa ocurrencia.
- Honestidad de las perillas: cada parámetro declarado debe actuar
visiblemente. Renderiza el programa dos veces con esa clave cambiada en
- Disparar:
Para una pieza GUIADA POR MOVIMIENTO, dispara una tira densa en su lugar (8+ veces, o una hoja de contacto de 1s); tres imágenes fijas no pueden juzgar la ponderación del movimiento.vos still <archivo>.json f12.webp --time <12% de duración> vos still <archivo>.json f40.webp --time <40%> vos still <archivo>.json f70.webp --time <70%> - Juzgar: puntúa los fotogramas contra el suelo artesanal a continuación Y
los documentos propios de la carpeta. Una pieza de colección responde tanto
al
DESIGN.mdde la colección como alTASTE.mdheredado. Revisa y repite (máximo 3 rondas); si aún falla, descártala y di por qué. Nunca subas trabajo que no defenderías.
5. Subir DENTRO de la carpeta, iterar como versiones
vos push <archivo>.json --title "…" --desc "una línea" --tags a,b \
--folder <folderId|slug> --label "lo que hiciste" --note "por qué: la solicitud"
Pasa --label y --note en CADA subida, incluida la primera: una
creación los sella en v1, y el historial es la conversación que el humano lee.
La subida crea un vos PRIVADO en el estante del propietario de la clave,
archivado en la carpeta que obtuviste; la vista previa y la miniatura se
renderizan en la nube a partir del guardado mismo. Itera con --vos <id>
contra la base rastreada (el bucle vos-remix: vos pull antes de cada ronda,
los nodos editados por humanos están protegidos, --override solo con
instrucción explícita). Las claves nunca pueden publicar; promocionar es un
gesto del humano en vos.so.
Mira lo que aterrizó. Cada subida renderiza una imagen fija en unos 15
segundos: GET /api/vos/{id}, sigue contentUrls.thumbnail y visualiza
la imagen antes de informar que está listo. Una subida que nunca miraste no está
terminada.
Pacear un lote: las subidas consecutivas están bien dentro de la cuota (la cola de renderizado espacia los lanzamientos del navegador y se regula sola). Verifica el estado después de un lote con una obtención de la carpeta, nunca rebuscando en el registro de subidas.
Escribe los hallazgos de vuelta. Cuando aprendes algo sobre la familia (un
rango de parámetros que se agrupa, una duración que se lee mejor), agrégalo a
la receta relevante bajo un encabezado fechado ## Notas del agente:
PUT /api/assets/{id}/file con el cuerpo completo de markdown (solo recetas,
≤64KB). Nunca reescribas las reglas del propietario. El
cuerpo reemplazado se conserva: GET /api/assets/{id}/file?prev=1 lo lee y
POST /api/assets/{id}/file/restore lo devuelve.
El proceso de familia: semilla, mira, expande
El trabajo de nueva familia es 1 semilla + una receta, nunca un lote. Un lote replica un error en cada miembro a la vez; una sola semilla captura un cambio de dirección en n=1, luego se expande económicamente. Esto es juicio, no una barrera: no hay línea de estado que escribir u obedecer, y la solicitud del usuario siempre decide.
- Crea UNA semilla, colócala en la carpeta, escribe (o actualiza) el
DESIGN.mdde la familia con el mecanismo, los ejes y las reglas de paleta. - Muéstrala. El humano itera contigo (versiones atribuidas). Cuando piden variantes, ESO es la aprobación; cuando una carpeta tiene un miembro joven y la solicitud es abierta, haz uno primero y di por qué.
- Expande cuando te lo pidan. Las variantes varían los ejes de composición (estructura, gramática de movimiento, densidad, cámara), nunca solo los tonos; una expansión solo de tonos se lee como un mosaico repetido diez veces. Limita una expansión a unas 10 para que la revisión del estante siga siendo una tarea de 5 minutos.
Suelo artesanal (universal, lintable: la barra que NO es gusto)
- Compila y valida:
vos checkpasa limpio; nunca lo suprimes. - Determinista: la búsqueda es una función pura de t (no
Date.nowniMath.randomen las rutas de fotogramas; el lint de determinismo lo aplica). - Matemáticas de bucle sin costura: para piezas en bucle, las fases deben ser múltiplos enteros sobre la duración para que el fotograma(0) ≈ fotograma(final). Las imágenes fijas no pueden mostrar la costura; verifícalo en las matemáticas.
- Perillas honestas: de 2 a 4 parámetros declarados, cada uno actuando visiblemente en ambos extremos de su rango. Pocas perillas honestas vencen a muchas.
- Las perillas se leen en
onFrame, cada fotograma, nunca se convierten en instantáneas dentro de uniformes dentro decreateContent. El editor entrega una edición de perilla como datos en vivo que solo intercambianctx.data; una instantánea en el momento de la creación nunca se actualiza hasta que se refresca. - Primer fotograma no vacío: el fotograma ~12% sirve como miniatura; sin aperturas negras, vacías o "aún no ha comenzado".
- Sin bandas, sin recorte: añade grano contra bandas; mantén el brillo fuera de la sobreexposición (fuerza ≤ ~0.8 a menos que los documentos de la carpeta lo exijan); sin costuras de mosaico visibles ni aliasing duro.
- Honestidad de la paleta: las perillas de color nunca pasan a través de
new THREE.Color()hacia uniformes; construye el vector sin procesar desde el hexadecimal. - Restricciones de renderizado del servidor (la flota de vista previa es
software-GL): no
THREE.DoubleSideen materiales de transmisión, nodispersion, cada asset obtenido debe ser una URLhttpsabsoluta que la flota pueda alcanzar.
Todo lo que esté después de esta línea (duración, densidad, estado de ánimo, materiales, disciplina de paleta) es dominio de la carpeta.
Informe
Termina con una tabla: slug · concepto · etiquetas · resultado (subido /
descartado + por qué), más la URL de la carpeta (https://vos.so/app/projects?folder=<slug>).
Expresa los fallos claramente: un diseño descartado es un resultado correcto, no
un error que ocultar.
Reglas estrictas
- Las referencias son dirección creativa. Portar código externo necesita una licencia compatible Y la dirección explícita del usuario; las composiciones con marca registrada o nombre comercial son rechazadas.
- Nunca publiques, nunca cambies la visibilidad. Las subidas son privadas por construcción; la promoción es una decisión humana en vos.so.
- El estante es del humano: crea carpetas y archiva TU trabajo; nunca renombres, muevas, elimines o reordene lo que ellos hicieron.
- Nunca imprimas una credencial, ni en la salida, los registros o el informe.