# AGENTS.MD

## 適用範囲
- このファイルは `voicevox-remotion-template` 配下全体に適用する。

## コミット方針
- コミットメッセージは日本語で記載する。
- コミット件名は、変更の目的が分かる短い文にする。
- コミットは、機能・生成物・ドキュメントなど意味のある単位で分ける。

## 実用上の制約
- `src/data/{コンポジション名}/script.ts` が時系列脚本の唯一の編集元。`src/data/script.json` は互換用であり、現在は参照しない。
- `npm run voice:generate` はヘルプ表示のみで音声生成しない。音声生成は `npm run voice:generate:{コンポジション名}` または `npm run voice:generate:all` を使い、VOICEVOX エンジンが `VOICEVOX_URL` で起動していることを前提にする。
- `npm run lipsync:generate` はヘルプ表示のみで口パクデータを生成しない。口パク生成は `npm run lipsync:generate:{コンポジション名}` または `npm run lipsync:generate:all` を使い、Rhubarb CLI が利用できることを前提にする。
- VOICEVOX の話者名・スタイル名は利用環境の `/speakers` に依存する。合わない場合は `characters.*.voicevox` を調整する。
- `say(...)` を追加・変更した場合は、音声と `src/data/{コンポジション名}/voicevox-manifest.json` を再生成する。
- `public/audio/{コンポジション名}/lines/*.wav` は動画再現に必要な音声素材として扱う。`out/` などレンダリング済み動画はコミットしない。
- 立ち絵画像は `public` 配下に置き、`avatar.imagePath` で参照する。現在の小夜は CSS 仮立ち絵。
- 実装後は可能な範囲で `./node_modules/.bin/tsc --noEmit` と `npm run lint` を実行する。
- 共通コンポーネントとして実装したコードや関数については、それぞれの先頭行の直上に「用途」「使用方法」「オプションや引数詳細」をコメントとして日本語で記載する。

## 新規動画追加方針
- 原則として、同一 Remotion プロジェクト内に別 Composition を追加し、動画別データディレクトリで脚本・音声・manifest・素材を分離する。
- 共通の描画部品、VOICEVOX 生成処理、型定義は再利用し、動画固有のデータを混ぜない。
- 依存関係、演出、ビルド設定、素材管理が大きく異なる動画だけ、同列の新規 Remotion プロジェクト化を検討する。
