Dalang — トピックからビデオへ
モードとルックはBriefで尋ねられ、その後固定されます(references/looks.md)。モード: Express(デフォルト; Canvas 2Dによる2.5D、references/express.md)または Studio(高精度: three.js、コードファーストのヒーロー、リファレンスボード、ベンチマーク、レビュー)。ルック: アイソメトリックファミリー(メインisometric-world、cutaway、blueprint)または object-studio(淡い背景上のスタディモデル)。3DルックがフィルムをStudioに移すことはありません。Step 6開始後のルック変更: すべてのビルダーを停止し、SPEC.mdを書き換え、すべてのグループを1メッセージで再起動します。ナレーションと音声はそのまま維持されます。
原則
7はStudio専用。それ以外は両モードで有効。
- ビジュアルの優先(
references/looks.md): ルックの番号付きルールがすべてのフレームとQCを決定します。object-studio: 淡いスタジオ、1つのアクセント、ヒーローは60~70%、1つの入力装置、生楽器、ホールドショット。 - 言葉優先、画像は後: スクリプト承認 → 音声 → すべての単語のタイミング → ビジュアル。
- 画面上のすべての変化は単語に合わせる、タイミングデータに基づく。
- 被写体はすべてのショットで動作する; 静止画の上にカメラを置くのはスライドショーです。
- 推測せず、測定する: 報告されるすべての数値はログまたはスクリプトから取得します。
- すべての質問は最初に、ユーザーゲートなし。 すべての質問はStep 1で行い、後でユーザーを待つことはありません。各4つのゲートを自分で通過し、チェックが通ったら1行で報告し、完成したフィルムまで実行します。後の変更は新しいラウンドです。最後のレンダリング(Gate 3のスタイルフレームとフックサンプルを除く)の前には最終品質のレンダリングは行いません。
- スタイライズされ、現実に即したもの。 フィルムごとに1つのルック。映像、フォトリアルなレンダリング、生成画像、クリップは使用しません。パーツ、プロポーション、スケール、動作は実際のリファレンスに一致します(
references/visual-direction.md§1)。 - トップスタジオ、やりすぎは禁止: スタイルフレーム、ポリッシュ、レビュールーブリック。ドラフトは10 fps。最終版は
--quality high --fps <brief fps>ですべてのチェックを通過します。 - デフォルトで無料。 有料または従量制サービス(ElevenLabs、HeyGen)はユーザーが要求した場合のみ使用し、「有料」とラベル付けします。商用利用可能なライセンスを優先。そうでない場合はその旨を明記します。
汎用目的。 あらゆるトピック、言語、プラットフォーム。他の video/<slug>/ フォルダを開かない。ユーザーが選択したシリーズキット以外は引き継ぎません(references/brief.md 「シリーズキット」)。engine/three/ はツールボックスであり、制限ではありません。不足する被写体は、独自の法則からモデル化するか、3Dを使用しないルックで表示します。
言語。 ユーザーの言語でチャットします。すべてのAskUserQuestionは英語です。 名前から言語を推測しないでください。
高速に動作し、少ないトークンで
- 1ビデオ=1セッション。状態はファイルに保存されます。再開:
node <skill-dir>/scripts/state.mjs next、BRIEF.md、PRODUCTION.mdの末尾。 - サブエージェントタイプ: 記載されている場合、ビルダー(修正ラウンド、スクリプト、音声)
dalang-builder、すべての判定dalang-checker、ファクトdalang-research。それ以外は汎用。 - スキルバージョン: 最初に
nextのDALANG v…を表示。gitは使用しない。 - 遅延読み込み: 各ステップで、
state.mjs next --printが出力するものだけを、一度にすべて読み取ります(Step 0はStep 1も出力します。最初のapprove <n>は次のステップを出力します:nextターンなし、--stepで先読みしない)。「必要なときに参照」は、そこに送られた場合のみ。リファレンス、エンジンのREADME、lessons.md全体、またはセクションを2回読まない。/hyperframesでは、必要なガイドのみ。 - 小さな出力:
--jsonでフィルタリング。words.json、*.response.json、完全なログは出力しない。バックグラウンド出力はバイト数で(tail -c 1500)。シーン変更はEdit呼び出し。sed -iやファイル全体のWriteは使用しない。 - シーンコードはビルダーサブエージェントに残す。 メインエージェントは
src/やassets/*.js(生成データは除く。スタイルフレームはビルダーに送る)を書き込んだり読み取ったりしない。パイロット、各グループ、アセンブリ、各修正ラウンドは新しいビルダーに送る(最後のレポートとパス、その予算はlook-build.md/express.mdに)。レビュアーはビルダーではありません。 - 画像はサブエージェントに残す。 メインエージェントは静止画、ストリップ、シート、スコープ、スタイルフレームを
Readしない。サブエージェントがパスとnextの「サブエージェントへのコマンド」を受け取り、テキストの判定を返します。例外:style-frames/src/の作成者は、最初の書き込み前に各review/refs-board-<frame>.jpgを1度だけ開きます。 - ジョブごとにモデルを指定、尋ねない:
state.mjs nextは各ステップのサブエージェントジョブを、モデルと努力量とともに出力します(state.mjs models: すべて、および top/mid/light の意味)。 エスカレーション、繰り返しなし。 失敗したジョブ(赤、使用不可、P0が残っている)は、1段階上の新しいエージェントに送られます。努力量(low → medium → high)、次にモデル(light → mid → top)。top · high が上限: P0が残っている場合は分類されます(hero-asset.md§3)。ダウングレードや2回実行はありません。クリーンなジョブは再実行されません。コピーまたはタイミングの修正は最大3回まで: 1段階下げます。各設定をログに記録します。 - メインエージェントはオーケストレーションを行い、作業は行いません。 あなたのターンはセッションを再読み取りします(サブエージェントの約10倍)。ループ(write ↔ lint、take ↔ retake、fix ↔ check)は1つのジョブ内で実行されます(Steps 3~4も同様)。各返信があなたを起動します: ジョブは判定まで実行されます。N個のジョブが同時に開始された場合、そのメッセージは
wait.mjs . --expect Nで終了します(timeout: 600000): 1ターン、1行。ランナー(express.mjs/studio.mjs <step>)は1つのフォアグラウンド呼び出しです(timeout: 600000)。約9分以内に終了する場合に使用し、チェーンやポーリングは行いません。エージェントプロンプトはジョブとパスです(15行以下。next --step <n> --subで読み取ります)。チェッカーは判定ファイルを書き込み、ビルダーはreview/reports/<job>.mdを書き込みます。両方とも簡潔に返信し、再入力はしません。state.mjs logは、ステップのコマンドに&&で付随し、独自のターンは使用しません。 - コンパクト:
workspace.mjs initは自動コンパクトを設定します(200K)。Gates 2~4で/compactが安全であることを一度だけ伝えます。 - デフォルトで並列実行。 独立したジョブは1つのメッセージで開始され、各エージェントは独自のファイルで動作します。重いジョブ(VoxCPM、レンダリング、チェック、スナップショット)は単独で実行され、モデルジョブと並行しません。
while kill -0 <pid>でキューイングします。同時実行: プリフライト ‖ トピック質問。リファレンス ‖ リサーチジョブ。Gate 1後: 音声ジョブ ‖ アセット(シーンは除く)。Gate 2: プランナーと音楽。Step 6 Studio: パイロット、次にすべてのグループ。Express: すべてのグループを一度に、パイロットなし(クリーンなテイクはexpress.mjs after-voiceでGates 1~2を自身で通過します。プランナーはexpress.mjs scaffold .を実行します)。Step 7: ドラフトチェック、次にレビュアー ‖ クイズ ‖ Set / Realityチェック。Step 8: レンダリング中にPOST.md。 - 安価なものを先に: テイクの前に
--sample。{}のみが移動する場合は--from-response。反復中はスナップショット。修正はラウンドごとにバッチ処理。QCは--fps 10 --quality draft。最終レンダリングは1回。 - ユーザーの要求が優先: そのルールに反する場合は1行でフラグを立て、黙って通過させない。
- 短いメッセージ: 何が変わったか、何を決定するか、リンク。待機中は次のゲートの時刻。約2分を超えるステップには見積もりを含める。
プロジェクトファイル(video/<topic-slug>/)
state.mjs log "<step> | <output> | <problems or ->" でログを記録します。フォルダはHyperFramesプロジェクトそのものです。そのフォルダからコマンドを実行します。*.tpl.html のみを編集します。node <skill-dir>/scripts/fill_times.mjs src/index.tpl.html index.html で index.html を再生成します(手動では行わず、2つ目のルート .html も作成しません)。
ステップ
| ステップ | 内容 | 終了条件 | 参照(references/) |
|---|---|---|---|
| 0 セットアップ | preflight.mjs を実行し、報告された問題を修正、プロジェクトフォルダを作成 | PRODUCTION.md | brief.md §0 |
| 1 ブリーフ | トピックを最初に、すべての質問を今行う | BRIEF.md | brief.md §1 |
| 2 リファレンス(オプション) | クラフトを測定、コピーはしない | reference-measurements.md | measure-reference.md |
| 3 スクリプト | リサーチ、ライター、読み合わせジョブ。approve 1 でリントを実行 | Gate 1 | script-voice.md §3 |
| 4 音声 | 1つの音声ジョブ。after-voice でパディング、Gates 1~2 | Gate 2 | script-voice.md §4 |
| 5 ルック | SPEC.md、ヒーロー、ストーリーボード、アセット、スタイルフレーム、ベンチマーク | Gate 3 | look-build.md §5 |
| 6 ビルド | ビルダー、BEATS/WORDS からのタイミング、オーディオミックス | index.html、リントがクリーン | look-build.md §6 |
| 7 QC | ドラフト、チェック、ストリップ、レビュアー、クイズ、修正ラウンド | Gate 4 | qc.md §7 |
| 8 最終 | アセットチェック、高品質レンダリング、再チェック | final.mp4、POST.md、レポート | qc.md §8 |
すべてのステップで: ゲートは state.mjs approve <n> --by agent で通過します(順番通り。ゲートのチェックを実行し、エラーがあれば拒否します。ゲート通過後に編集されたファイルは、再承認されるまでSTALEになります)。BRIEF.md がフォーマットと言語を決定します。録音またはクローン音声は話者の許可がある場合のみ使用します。ページはClaudeの組み込みブラウザのみで開き、ユーザーのChromeは使用しません。すべてのステップと問題を PRODUCTION.md にログ記録します。シリーズフィードバックは series.mjs note で行い、メモリには保存しません。
自律モード
ユーザーがトピックを指定して去った場合、ユーザーの発言を使用します。それ以外は次のデフォルト: Express。YouTube 16:9、60~90秒(ショートまたは60秒以下の場合はShorts 9:16)。ユーザーの言語。object-studio(Studio: isometric-world)。「モダンバランス」。一般視聴者。VoiceStudio、デフォルト音声、brief.md Step 0に従います(Step 4までに準備ができていない場合は停止し、その旨を伝えます)。「デフォルト使用」と PRODUCTION.md の最初に書き込み、各決定をログに記録し、フィルムを完成させます。出荷ルール: references/qc.md 「ユーザー不在」(終了コード2で残留する audio_qc.mjs は、ハンドオフ時に名前を指定され、決して合格としません)。インストールの提案はスキップします(ログに記録します)。インストール済みのスキルは編集しないでください。
問題が発生した場合
grep -n -i '<word>' <skill-dir>/references/lessons.md