akuko — de la historia a la película, una etapa revisada a la vez
Este archivo es un enrutador. Cada acción vive en su propio archivo bajo actions/; cárgalo bajo demanda y síguelo. No incluyas comportamiento de acciones aquí. Las reglas compartidas viven en lib/:
lib/state.md— el archivo del proyecto, etapas, transiciones de estado, plegado de decisiones. Léelo antes de cualquier cosa que escriba.lib/hosts.md— detección de anfitrión, qué puede hacer cada anfitrión, el adaptador de anfitrión.lib/spend.md— la compuerta de gasto y el libro de costos (WP-03).lib/providers.md— proveedores (WP-03).
El formato del proyecto es schema/akuko-project.ts (akuko.json, JSON Schema en schema/akuko-project.schema.json).
Cada acción comienza de la misma manera
- Detectar el anfitrión (
lib/hosts.md§Detección): A claude-artifact · B local · C ikenga. Ejecutanode --experimental-strip-types hosts/detect.ts --tools <tu lista COMPLETA de herramientas — todos los nombres de herramientas cargadas y diferidas>. Si la salida tiene unaadvertencia, o si tienes alguna duda, trata el anfitrión como A (BD de artefactos) y nunca crees una carpeta de proyecto. Registra el resultado enakuko.json.host. - Leer el proyecto a través del adaptador de anfitrión (
readState()); si no hay ninguno, enruta aintake(osetupsi la persona quiere configurar primero). - Plegar las decisiones que las personas tomaron desde la última ejecución (
readDecisions()→lib/state.md§Plegado de decisiones) antes de hacer cualquier otra cosa. - Cargar el archivo de acción y seguirlo. Escribir el proyecto solo a través de
writeState(); almacenar archivos solo a través destoreAsset().
Enrutamiento
| Si el usuario dice… | Cargar esto | Propietario |
|---|---|---|
| "configurar akuko", "configurar", "establecer un presupuesto", "añadir mis claves" | actions/setup.md | WP-08 |
| "verificar mi configuración", "qué falta", "doctor" | actions/doctor.md | WP-08 |
| "hacer una película a partir de esta historia/guion", "iniciar un proyecto", "recepción" | actions/intake.md | WP-04 |
| "desglosarlo", "lista de tomas", "desglose", "importar una lista de tomas" | actions/breakdown.md | WP-04 |
| "personajes", "ubicaciones", "apariencia/estilo", "biblia" | actions/bible.md | WP-05 |
| "storyboard", "boceto del tablero", "tablero de ritmo", "tablero" | actions/board.md | WP-21 |
| "fotogramas clave", "paneles finales", "fotogramas clave", "verificación de continuidad" | actions/keyframes.md | WP-22 |
| "animar", "hacer los clips", "movimiento", "tratamiento", "movimientos de cámara" | actions/motion.md | WP-10 · WP-11 · WP-27 |
| "sincronización labial", "hacer que digan la línea", "lipsync" | actions/lipsync.md | WP-28b |
| "voz en off", "música", "efectos de sonido", "sonido" | actions/sound.md | WP-12 |
| "animática", "previsualizar la película", "déjame verla", "corte preliminar", "montaje" | actions/assemble.md | B-11 (preview construido) · WP-13 (corte preliminar, bloqueo de imagen: esqueleto) |
| "exportar", "enviar a Resolve", "dame una línea de tiempo" | actions/export.md | WP-23 (entrega a Resolve) |
| "lo revisé", "aplicar mis notas", "revisión" | actions/review.md | WP-07a |
| "muéstrame…", "abrir el tablero", "ver" | actions/view.md | WP-07c |
| "dónde estamos", "qué sigue", "estado", "cuánto costará", "estimación" | actions/status.md | WP-30 (estimación de toda la película) |
Exportar entrega la película aprobada a DaVinci Resolve como una línea de tiempo más los medios. Los masters MP4, cortes y una presentación de Canva están aparcados (plan Ronda 7): si se solicita un MP4, dilo y ofrece la entrega.
Si nada coincide, ejecuta status y ofrece la siguiente acción que sugiera. Si un archivo de acción (o la ruta solicitada) sigue diciendo Esqueleto (WP-02), dile a la persona que aún no está construido y para — no lo improvises. Una animática tampoco se improvisa: assemble preview es la ruta gratuita y construida para una (fotogramas clave aprobados sincronizados con las tomas, nunca una unidad de revisión, nunca guardada en el proyecto).
Etapas
intake → breakdown → sketch → bible → keyframes → motion → sound → assemble → export (0–8, schema/akuko-project.ts#STAGES; el perfil de la película es profiles/film/profile.json). Una etapa solo se abre cuando las etapas anteriores están aprobadas (lib/state.md §Etapas).
Reglas de revisión
Estas se aplican en todos los anfitriones y en cada acción y vista:
- Solo una persona aprueba. Las acciones mueven las unidades a
pending-review; solo la decisión de una persona mueve una unidad aapproved. Ninguna acción o vista auto-aprueba, pre-marca o aprueba en lote. - Nunca avanzar automáticamente más allá de la revisión. Cada etapa termina en una compuerta de revisión (Atelier
ux_mode: approve): ejecutar, luego pausar en lo que se produjo. - Una unidad a la vez dentro de una etapa: producir, mostrar, esperar — no regeneres toda la etapa porque una toma fue devuelta.
- Las decisiones pasan por el formato de decisión (
Decisionen el esquema), escritas por una superficie de revisión al almacenamiento del anfitrión. Una vista nunca editaakuko.jsony nunca llama awriteState(). - Los cambios solicitados se honran, luego se marcan: revisa la unidad, añade un comentario "Revisado: …", devuélvela a
pending-review.
Reglas de gasto
- Sin llamada paga sin un OK. Cada trabajo pago (imagen, video, TTS) pasa por la compuerta de gasto (
lib/spend.md): muestra la estimación, el límite, lo gastado y lo que queda si apruebas, luego espera una aprobación explícita de ese trabajo. - Sin límite, sin gasto. Si
akuko.json.budgetes nulo, rechaza los trabajos pagos y señala asetup. - Nunca exceder el límite o el
approved_maxde un trabajo; detente y pregunta. - El dinero nunca se oculta ni redondea. Cada llamada paga se registra en
ledger[], éxito o fracaso. - Las claves permanecen en el entorno (o en el almacenamiento secreto del anfitrión) — nunca en
akuko.json, una vista, la base de datos de artefactos, el libro de contabilidad o un archivo que el tablero pueda leer, y nunca repetidas. En claude.ai (anfitrión A), se pega una clave por chat, y solo cuando está a punto de ejecutarse una llamada directa paga: primero sondea la red (scripts/probe.ts), dile a la persona que la clave será visible en el historial de este chat, que se usa solo para este chat y que nunca se escribe en ningún lado, obtén "usa mi clave para este chat", luego establécela solo en el entorno de ese comando, reserva, guarda en el tablero, envía (lib/spend.md§Anfitrión A, R-11). - Las reglas de la casa priman sobre el dinero. Cuando el proyecto tiene
rules, cada trabajo se verifica contra ellas antes de la compuerta de gasto, y una infracción se rechaza (rules-breach), nombrando la regla y el texto o archivo infractor. Repórtalo y para; nunca reformules, elimines una referencia o edites las reglas para sortearlo. Ejecutarules/cli.ts checkpara una verificación previa gratuita (lib/state.md§"Guardia de reglas (WP-26)"). - Una asignación de plan también es un gasto. Una herramienta conectada que use la asignación del plan de la persona en lugar de dinero (el límite mensual de IA de Canva en claude.ai) obtiene un OK de cada tanda: el recuento, el servicio, que akuko no puede ver lo que queda, y la respuesta exacta
approve <n> <service> generations. Cada generación va al libro de contabilidad con cero dinero y un recuento de unidades (lib/spend.md§Asignación).
Anfitriones en una línea cada uno
- A — claude-artifact (claude.ai): Node y archivos solo en un espacio de trabajo remoto que dura un chat, por lo que no hay una carpeta de proyecto duradera. El proyecto vive en la base de datos del artefacto del tablero; el agente lo lee y escribe con llamadas a herramientas y ejecuta los comandos de etapa en una copia de trabajo. Generación a través de MCP conectados (por ejemplo, Canva), paquetes de indicaciones manuales y API directas pagas con una clave pegada para ese chat (R-11, después de un sondeo de red); los renders MP4 se realizan localmente.
- B — local (Claude Code):
akuko.jsonen disco, archivos en la carpeta del proyecto, todos los proveedores a través de claves de entorno, HyperFrames + FFmpeg. - C — ikenga: B más el puente Ikenga (y Studio cuando su MCP esté conectado); Studio es propietario del estado de render.
Detalles y la evidencia de capacidad: lib/hosts.md.
Archivos
SKILL.md este enrutador
actions/*.md un archivo por acción (frontmatter de Atelier)
lib/state.md reglas del archivo del proyecto, etapas, transiciones, plegado de decisiones
lib/hosts.md detección de anfitrión, capacidades, verificación manual de anfitrión
hosts/types.ts contrato HostAdapter (G-HOST)
hosts/{claude-artifact,local,ikenga}.ts un adaptador por anfitrión
profiles/film/ el perfil de la película
schema/ formato akuko.json (G-SCHEMA)