akuko — de l'histoire au film, une étape examinée à la fois
Ce fichier est un routeur. Chaque action vit dans son propre fichier sous actions/ ; chargez-la à la demande et suivez-la. N'intégrez pas ici le comportement des actions. Les règles partagées se trouvent dans lib/ :
lib/state.md— le fichier projet, les étapes, les transitions d'état, le pliage des décisions. Lisez-le avant toute écriture.lib/hosts.md— détection de l'hôte, capacités de chaque hôte, adaptateur d'hôte.lib/spend.md— la barrière de dépenses et le registre des coûts (WP-03).lib/providers.md— fournisseurs (WP-03).
Le format du projet est schema/akuko-project.ts (akuko.json, schéma JSON dans schema/akuko-project.schema.json).
Chaque action commence de la même manière
- Détectez l'hôte (
lib/hosts.md§Détection) : A claude-artifact · B local · C ikenga. Exécuteznode --experimental-strip-types hosts/detect.ts --tools <votre liste COMPLÈTE d'outils — chaque nom d'outil chargé et différé>. Si la sortie contient unwarning, ou si vous avez un doute, considérez l'hôte comme A (BD d'artefacts) et ne créez jamais de dossier de projet. Enregistrez le résultat dansakuko.json.host. - Lisez le projet via l'adaptateur d'hôte (
readState()) ; s'il n'y en a pas, acheminez versintake(ousetupsi la personne souhaite d'abord configurer). - Pliez les décisions prises depuis la dernière exécution (
readDecisions()→lib/state.md§Pliage des décisions) avant toute autre action. - Chargez le fichier d'action et suivez-le. Écrivez le projet uniquement via
writeState(); stockez les fichiers uniquement viastoreAsset().
Routage
| Si l'utilisateur dit… | Chargez ceci | Propriétaire |
|---|---|---|
| "configure akuko", "configurer", "définir un budget", "ajouter mes clés" | actions/setup.md | WP-08 |
| "vérifier ma configuration", "que manque-t-il", "diagnostic" | actions/doctor.md | WP-08 |
| "faire un film à partir de cette histoire / ce script", "commencer un projet", "intake" | actions/intake.md | WP-04 |
| "décomposer", "liste des plans", "breakdown", "importer une liste de plans" | actions/breakdown.md | WP-04 |
| "personnages", "lieux", "look / style", "bible" | actions/bible.md | WP-05 |
| "storyboard", "croquis de planches", "planches de séquence", "board" | actions/board.md | WP-21 |
| "images clés", "panneaux finaux", "keyframes", "vérification de continuité" | actions/keyframes.md | WP-22 |
| "animer", "créer les clips", "mouvement", "traitement", "mouvements de caméra" | actions/motion.md | WP-10 · WP-11 · WP-27 |
| "synchronisation labiale", "faire dire le texte", "lipsync" | actions/lipsync.md | WP-28b |
| "voix off", "musique", "effets sonores", "son" | actions/sound.md | WP-12 |
| "animatique", "prévisualiser le film", "laisser-moi regarder", "montage brut", "assembler" | actions/assemble.md | B-11 (preview construit) · WP-13 (montage brut, verrouillage d'image : stub) |
| "exporter", "envoyer à Resolve", "donner une timeline" | actions/export.md | WP-23 (remise Resolve) |
| "j'ai examiné", "appliquer mes notes", "examiner" | actions/review.md | WP-07a |
| "montre-moi …", "ouvrir la planche", "voir" | actions/view.md | WP-07c |
| "où en sommes-nous", "quelle est la prochaine étape", "statut", "combien ça coûtera", "estimation" | actions/status.md | WP-30 (estimation complète du film) |
Export remet le film approuvé à DaVinci Resolve sous forme de timeline et de médias. Les masters MP4, les versions raccourcies et un deck Canva sont réservés (plan Round 7) : si on vous demande un MP4, dites-le et proposez la remise.
Si rien ne correspond, exécutez status et proposez la prochaine action suggérée. Si un fichier d'action (ou la route demandée) indique encore Stub (WP-02), dites à la personne que ce n'est pas encore construit et arrêtez — n'improvisez pas. Une animatique ne s'improvise pas non plus : assemble preview est la route construite et gratuite pour une (images clés approuvées chronométrées aux plans, jamais une unité de révision, jamais sauvegardée dans le projet).
Étapes
intake → breakdown → sketch → bible → keyframes → motion → sound → assemble → export (0–8, schema/akuko-project.ts#STAGES ; le profil du film est profiles/film/profile.json). Une étape s'ouvre uniquement lorsque les étapes précédentes sont approuvées (lib/state.md §Étapes).
Règles de révision
Elles s'appliquent sur tous les hôtes et dans chaque action et vue :
- Seule une personne approuve. Les actions déplacent les unités vers
pending-review; seule la décision d'une personne déplace une unité versapproved. Aucune action ou vue n'auto-approuve, ne pré-coche ou n'approuve en masse. - Ne jamais passer automatiquement la révision. Chaque étape se termine par une porte de révision (Atelier
ux_mode: approve) : exécutez, puis faites une pause sur ce qui a été produit. - Une unité à la fois au sein d'une étape : produisez, montrez, attendez — ne régénérez pas toute l'étape parce qu'un plan a été renvoyé.
- Les décisions passent par le format de décision (
Decisiondans le schéma), écrit par une surface de révision dans le stockage de l'hôte. Une vue ne modifie jamaisakuko.jsonet n'appelle jamaiswriteState(). - Les modifications demandées sont honorées, puis marquées : révisez l'unité, ajoutez un commentaire "Révisé : …", remettez-la dans
pending-review.
Règles de dépenses
- Pas d'appel payant sans accord. Chaque travail payant (image, vidéo, TTS) passe par la barrière de dépenses (
lib/spend.md) : montrez l'estimation, le plafond, ce qui est dépensé et ce qui reste si vous approuvez, puis attendez une approbation explicite pour ce travail. - Pas de plafond, pas de dépense. Si
akuko.json.budgetest nul, refusez les travaux payants et dirigez verssetup. - Ne jamais dépasser le plafond ou le
approved_maxd'un travail ; arrêtez et demandez plutôt. - L'argent n'est jamais caché ou arrondi. Chaque appel payant est enregistré dans
ledger[], succès ou échec. - Les clés restent dans l'environnement (ou le magasin de secrets de l'hôte) — jamais dans
akuko.json, une vue, la base de données d'artefacts, le registre ou un fichier que la planche peut lire, et jamais répété. Sur claude.ai (hôte A), une clé est collée par chat, et seulement lorsqu'un appel direct payant est sur le point d'être exécuté : sondez d'abord le réseau (scripts/probe.ts), dites à la personne que la clé sera visible dans l'historique de ce chat, qu'elle est utilisée uniquement pour ce chat et n'est jamais écrite nulle part, obtenez "utilise ma clé pour ce chat", puis définissez-la uniquement sur l'environnement de cette commande, réservez, sauvegardez sur la planche, envoyez (lib/spend.md§Hôte A, R-11). - Les règles internes passent avant l'argent. Lorsque le projet a des
rules, chaque travail est vérifié par rapport à elles avant la barrière de dépenses, et une infraction est refusée (rules-breach), nommant la règle et le texte ou fichier incriminé. Signalez-le et arrêtez ; ne reformulez jamais, ne supprimez pas de référence et ne modifiez pas les règles pour contourner. Exécutezrules/cli.ts checkpour un précontrôle gratuit (lib/state.md§"Barrière règles (WP-26)"). - Une allocation de plan est aussi une dépense. Un outil connecté qui utilise l'allocation personnelle du plan au lieu d'argent (limite mensuelle d'IA Canva sur claude.ai) nécessite un accord pour chaque vague : le nombre, le service, le fait qu'akuko ne peut pas voir ce qui reste, et la réponse exacte
approve <n> <service> generations. Chaque génération va dans le registre avec zéro argent et un compteur d'unités (lib/spend.md§Allocation).
Hôtes en une ligne chacun
- A — claude-artifact (claude.ai) : Node et fichiers uniquement dans un workspace distant qui dure un seul chat, donc pas de dossier de projet durable. Le projet vit dans la base de données de l'artefact de la planche ; l'agent le lit et l'écrit avec des appels d'outils et exécute les commandes d'étape sur une copie de travail. Génération via des MCP connectés (ex. Canva), des packages de prompts manuels et des API directes payantes avec une clé collée pour ce chat (R-11, après un sondage réseau) ; rendus MP4 localement.
- B — local (Claude Code) :
akuko.jsonsur le disque, fichiers dans le dossier du projet, tous les fournisseurs via des clés d'environnement, HyperFrames + FFmpeg. - C — ikenga : B plus le pont Ikenga (et Studio lorsque son MCP est connecté) ; Studio possède l'état de rendu.
Détails et preuves de capacités : lib/hosts.md.
Fichiers
SKILL.md ce routeur
actions/*.md un fichier par action (frontmatter Atelier)
lib/state.md règles du fichier projet, étapes, transitions, pliage des décisions
lib/hosts.md détection de l'hôte, capacités, vérification manuelle de l'hôte
hosts/types.ts contrat HostAdapter (G-HOST)
hosts/{claude-artifact,local,ikenga}.ts un adaptateur par hôte
profiles/film/ le profil du film
schema/ le format akuko.json (G-SCHEMA)