rive-script-builder について
Rive Script Builderは、Riveの制作者向けに、実行可能なRive Luauスクリプトの作成、修正、レビューを支援するスキルです。適切なプロトコルの選択とAPIシグネチャの確認を重視し、エディター設定やデバッグの手順も示します。
主な機能
- 01目的に合うRiveプロトコルを選択
- 02型付きLuauスクリプトを生成
- 03Riveドキュメントを参照してAPIを確認
- 04エディター設定の手順を提示
- 05デバッグとテストを提案
- 06ライフサイクルと実行時制約を順守
活用シーン
- 01明確な要件に沿ったRiveスクリプトの実装
- 02スクリプトAPIやプロトコル選択の調査
- 03複数スクリプトとエディター設定の計画
MCP 対応
正確または不確かなAPIの確認にContext7 MCPでRiveドキュメントを参照できます。利用できない場合は、記載されたローカルスクリプトによる検索手順に従います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sanqiushili/ rive_skills --skill rive-script-builderインストール後、Claude Code で/rive-script-builderを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamldocs/api-signature-cheatsheet.mdclarification-checklists.mdcommon-errors-and-fixes.mdcontext7-query-recipes.mddata-binding-deep-dive.mddebug-test-playbook.mdeditor-wiring-recipes.mdlive-docs-workflow.mdpath-api-performance-notes.mdpointer-events-playbook.mdprotocol-router.mdquality-gates.mdREADME.mdscript-inputs-deep-dive.mdsource-scripting-index.mddocs/source-scripting/api-reference/artboards/animation.mdxartboard.mdxnode-data.mdxnode-read-data.mdxpointer-event.mdxview-model.mdxdocs/source-scripting/api-reference/color/color.mdxdocs/source-scripting/api-reference/data-value/data-value-boolean.mdxdata-value-color.mdxdata-value-number.mdxdata-value-string.mdxdata-value.mdxlistener.mdxproperty-trigger.mdx詳細
Rive Script Builder
正確に実行できる Rive Luau スクリプトを作成します。適切なプロトコルの選択、有効な Luau シグネチャ、エディターでの接続方法、ユーザーとのやり取りの最小化を重視します。
ナレッジポリシー:
- 一般的なプロトコル作業には、このファイルに埋め込まれた基本情報とローカルのリファレンスを使用します。
- API の詳細が正確に分からない場合や不確かな場合は、Context7 MCP での検索を優先します(ライブラリ:
/rive-app/rive-docs)。 - Context7 を利用できない場合は、
sync_rive_docs.pyのオンライン/キャッシュ/オフラインの順でフォールバックします。 - API、ライフサイクルメソッド、エディターメニューを決してでっち上げないでください。
迅速な作業モード
- ユーザーがコードの作成、修正、レビューを明示的に依頼しており、プロトコルが明確な場合は、小規模な実装にすぐ着手します。
- 不明点が一つか二つある場合は、妥当な前提を置き、コードの前に明示します。
- 答えによってプロトコルの選択、データの所有権、またはエディターでの接続方法が変わる場合に限り、質問します。
- 広範で不明確な依頼、リスクのある書き換え、複数スクリプトのアーキテクチャの場合に限り、保留中の計画を提示して承認を待ちます。
重要な Rive ランタイムのコンテキスト
- Rive スクリプトは Roblox、ブラウザー JavaScript、通常の Lua ではなく、Rive のサンドボックス化された Luau VM で実行されます。
- アタッチ可能なスクリプトでは、ファイル I/O、ネットワーク、
os.execute、loadstring、Roblox のグローバル、共有された変更可能なモジュール状態を使用しないでください。 - スクリプト名には PascalCase を使用してください。可能であれば、メインのエクスポート型名をスクリプト名に合わせます。
- アタッチ可能なスクリプトはすべてファクトリー関数を返し、アタッチごとに新しいインスタンスを作成します。
initで作成される Rive オブジェクト、エディターで割り当てる参照、Input<Data.X>、その他の後から初期化される値にはlate()を使用します。Input<Trigger>のデフォルト値はfunction() endであり、late()やnilではありません。- プリミティブ型の
Input<T>の値は、たとえばself.speed.valueではなく、self.speedのように直接読み取ります。 - 通常のスクリプト入力は、スクリプトからは実質的に読み取り専用です。ランタイムで値を書き込む場合は、ViewModel データを使用します。
Colorは不変です。チャンネルヘルパーは新しい色を返します。- コールバックは処理時間を制限でき、決定論的なものにしてください。長時間の同期ループはランタイムによって停止される可能性があります。
必須要件
- ユーザーの目的を把握し、まず推奨するプロトコルを提示します。
- 影響の大きい未解決の質問に限り、質問します。
- タスクが不明確またはリスクを伴う場合は、コードを書く前に「保留中の実装計画」を提示します。
- 保留中の計画が必要な場合に限り、明示的な承認を待ちます。
- 承認済み、またはすでに明確な実装依頼では、以下を出力します。
- Luau スクリプトコード
- Rive エディターでの接続手順
- デバッグとテストの提案
- ユーザーの言語に自動的に合わせます。
- 承認が必要なのに得られていない場合は、最終的なスクリプトコードを出力しません。
ワークフロー
フェーズ 0:ドキュメントのライブ検索(必要な場合)
API を正確に確認する必要がある場合の検索順:
- Context7 MCP(第一候補)
scripts/sync_rive_docs.py(第二候補のフォールバック)
Context7 MCP の優先呼び出し:
resolve-library-id -> /rive-app/rive-docs
query-docs(libraryId="/rive-app/rive-docs", query="<target API/protocol question>")
クエリのテンプレート:
docs/context7-query-recipes.md
フォールバック検索コマンド:
cd /path/to/rive-script-builder
python3 scripts/sync_rive_docs.py search --source auto --query "PathEffect"
python3 scripts/sync_rive_docs.py show --source auto --path scripting/protocols/path-effect-scripts.mdx
任意のキャッシュ事前ウォームアップ(推奨ですが必須ではありません):
cd /path/to/rive-script-builder
python3 scripts/sync_rive_docs.py sync
sync_rive_docs.py は、この SKILL.md を基準とした相対パスで解決してください。固定されたグローバルのスキルディレクトリを前提にしないでください。
auto のフォールバック順:
search:オンライン → キャッシュ → オフラインshow:オンライン → キャッシュ
フォールバックが発生した場合は、その理由を出力で明示してください。
docs/live-docs-workflow.md を参照してください。
オフラインのナレッジには、上流の完全なミラー docs/source-scripting/ が含まれています。
フェーズ 1:範囲の確認と振り分け
docs/protocol-router.mdを使用して、対象のプロトコルを特定します。docs/api-signature-cheatsheet.mdを使用して、正確なメソッドシグネチャを確定します。- API の詳細が正確に分からない場合は、
docs/source-scripting/api-reference/内の該当ファイルを確認します。 - データ駆動型スクリプトでは、
docs/data-binding-deep-dive.mdとdocs/script-inputs-deep-dive.mdに沿って実装します。 - 複数のプロトコルが必要な場合は、実現可能な最小限の組み合わせを提案し、その理由を説明します。
- 前提を明示します。
フェーズ 2:不確実な点を明確にする
- 実装の判断に影響する質問だけをしてください。
docs/clarification-checklists.mdを使用してください。- インタラクションが多いリクエストでは、
docs/pointer-events-playbook.mdを使用して、未解決のイベントルーティングの詳細を絞り込んでください。 - ユーザーのコンテキストですでに回答されている質問は省いてください。
フェーズ 3:保留中の計画を提示する
リクエストの範囲が広い、詳細が不足している、または複数のスクリプトが必要になりそうな場合にのみ、このフェーズを使用してください。
コーディングを始める前に、次の構成で提示してください。
- 目標の理解
- 推奨するプロトコルとその理由
- 前提条件と制約
- 実装の概要(関数、入力、データフロー)
- Rive の配線手順
- デバッグとテストの計画
- 明示的な確認依頼
ユーザーが承認しない場合は、計画の調整のみを続けてください。
フェーズ 4:実装する
- リクエストが明確である、または承認済みの場合は、まず最小限で実行可能な型付き Luau スクリプトを生成してください。
- 依頼された動作のみを追加してください。
references/scaffold-templates.mdのテンプレートを再利用してください。- 一般的なタスクでは、
references/case-recipes.mdを出発点として調整してください。 - プロトコルのライフサイクル契約が有効であることを維持してください。
フェーズ 5:統合方法の案内とともに納品する
必ず以下を含めてください。
- 完成した Luau コード
- エディターでの配線手順(アタッチ、バインド、実行の場所)
- デバッグチェックリスト(Problems と Console)
- テストの提案(特に Util のテストスクリプト)
docs/editor-wiring-recipes.md と docs/debug-test-playbook.md を使用してください。
パスを多用するスクリプトでは、docs/path-api-performance-notes.md を使用してください。
最終品質チェックリストとして docs/quality-gates.md を使用してください。
プロトコルと API に関するガードレール
- ライフサイクル関数、インターフェース、エディターパスを決して作り出さないでください。
- 正規のベクター型として
Vectorを優先してください。Vec2Dはエイリアスとして存在する場合がありますが、生成コードのデフォルトにはしないでください。 Node.update(self)は入力変更時の再計算に使用します。PathEffect.update(self, inPath)はホストのパスデータを受け取り、置き換え後のパスデータを返します。- Luau では
~=,and,or,notを使用してください。!=,&&,||,!などの JavaScript/C 構文は出力しないでください。 import/export defaultは使用せず、Rive のrequire("UtilName")とreturnのパターンを使用してください。draw内で状態を変更しないでください。update内、またはadvance内で描画前にパスを再構築してください。- 描画後、同じフレーム内で
Pathを再度変更したり、reset()したりしないでください。 TransitionCondition.evaluateは高速で、副作用のない状態にしてください。- 副作用には
ListenerAction.performを使用してください。 PathEffectでは、updateの動作が決定的になるようにしてください。時間ベースの動作に限りadvanceを使用してください。- スクリプトから通常の入力値は設定できません。書き込み可能なデータには、コンテキストまたはビューモデルへのアクセスを使用してください。
- 文字列は親 Text オブジェクトではなく、Text Runs にバインドしてください。
- メモリーリークを防ぐため、不要になった長期間有効なリスナーは削除してください。
- 最終引き渡し前に
docs/common-errors-and-fixes.mdを確認してください。 - 必要な詳細が不足している場合は、コーディングを始める前に質問してください。
出力形式
承認が必要な場合:
- 理解した内容
- 未解決の質問
- 保留中の計画
- 確認の依頼
直接実装する場合、または承認後:
- スクリプトコード
- 配線手順
- デバッグ計画
- テスト計画
ドキュメントとリファレンスの一覧
- ライブドキュメントの同期とフォールバックのルール:
docs/live-docs-workflow.md - クロスプラットフォーム公開ガイド:
docs/publish-cross-platform.md - プロトコルのルーティングとメソッドの契約:
docs/protocol-router.md - シグネチャと API のクイックリファレンス:
docs/api-signature-cheatsheet.md - プロトコル別の確認事項:
docs/clarification-checklists.md - データバインディングの詳細解説:
docs/data-binding-deep-dive.md - スクリプト入力の詳細解説:
docs/script-inputs-deep-dive.md - ポインターイベントの実践ガイド:
docs/pointer-events-playbook.md - パス API とパフォーマンスに関するメモ:
docs/path-api-performance-notes.md - 最終品質チェック:
docs/quality-gates.md - Context7 クエリのテンプレート:
docs/context7-query-recipes.md - ミラー全体のインデックス:
docs/source-scripting-index.md - 上流のミラー全体のフォルダー:
docs/source-scripting/ - エディターへの接続とバインディングの手順:
docs/editor-wiring-recipes.md - デバッグとテストのワークフロー:
docs/debug-test-playbook.md - よくあるエラーと解決方法:
docs/common-errors-and-fixes.md - 最小限の Luau テンプレート:
references/scaffold-templates.md - 実践的なケース別レシピ:
references/case-recipes.md