roblox-luau-developer について
Roblox Luau プロジェクトの実装、レビュー、リファクタリング、デバッグを支援するワークフロースキルです。Rojo 管理のコードベースにも対応し、サーバーとクライアントの境界や検証結果の記録を案内します。
主な機能
- 01Rojo、Studio エクスポート、roblox-ts の判別
- 02サーバー・クライアントコードと Remote 呼び出しの確認
- 03実行時、レプリケーション、DataStore の問題調査
- 04Rojo の同期・保守ワークフロー
- 05検証方法の選択と根拠の記録
活用シーン
- 01編集前の Roblox コードベースのレビュー
- 02実行時またはレプリケーション障害の追跡
- 03Rojo 管理プロジェクトの保守と同期
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ demon673/ demon-agent-skill --skill roblox-luau-developerインストール後、Claude Code で/roblox-luau-developerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/gameplay-debugging.mdrojo-workflow.md詳細
Roblox Luau 開発者
Roblox Luau コードの実装、レビュー、リファクタリング、ランタイムの問題の診断、Rojo 管理のコードベースの同期を行うワークフローです。Luau と Roblox のサーバー/クライアントモデルを前提としています。プロジェクトの構成については次に説明します。
プロジェクトの構成を特定する
まず、プロジェクトの構成を確認します。
- Rojo プロジェクト:
default.project.jsonまたは*.project.jsonがあります。ツールチェーンのファイルと同期ワークフローについては、references/rojo-workflow.mdを参照してください。 - Studio エクスポート:
.rbxlx、.rbxmx、.model.json、src/、ReplicatedStorage/、ServerScriptService/を確認します。 - TypeScript ソース:
roblox-tsプロジェクトには、tsconfig.json、rbxtsc、@rbxts/*パッケージがあります。.tsソースが信頼できる唯一のソースであり、out/はroblox-typescript-developerが管理するビルド成果物です。
編集前に読む
rgを使ってサービス、モジュール、Remote 名、Attribute 名、CollectionService タグを検索します。- ServerScripts、LocalScripts、ModuleScripts の呼び出し方向を把握します。
- Instance のパス、Remote 名、UI コントロール名はプロジェクトに基づきます。
サーバー/クライアントのレイヤーを維持する
- 権威ある状態と検証はサーバー側で管理します。
- クライアントは入力、表示、予測、リクエストを処理します。
- Remote のパラメーターは、型と権限を検証する必要があります。
- DataStore への書き込みには、スロットリング、再試行、失敗処理が必要です。
変更は小さくする
- 既存モジュールの戻り値の形、サービス名、require のスタイルを維持します。
- モジュールの状態はモジュール内に置くか、パラメーターとして渡します。
- 共有テーブルと接続オブジェクトのクリーンアップ手段を用意します。
デバッグ
ランタイム、レプリケーション、パフォーマンス、DataStore、UI が更新されない問題については、references/gameplay-debugging.md のプレイブックに従ってください。問題がデータフローではなく UI のレイアウト、フォーカス、画面のライフサイクルに関する場合は、roblox-ui-developer に引き継いでください。
Rojo プロジェクト
Rojo 管理のコードベースの理解、保守、同期については、references/rojo-workflow.md に従ってください。
注意点
- クライアントからの入力は信頼できません。体力、通貨、インベントリを管理するサーバーで、すべての remote 引数の型と範囲を検証してください。
LocalScriptの配置場所によって、クライアントコードが実行されるかどうかが決まります。配置場所はStarterPlayerScripts、StarterCharacterScripts、StarterGui、またはツールです。サーバーのScriptはServerScriptServiceまたはWorkspaceに配置します。task.wait、task.spawn、task.delayを使ってください。グローバル関数のwait、spawn、delayは非推奨で、スケジュールの効率も劣ります。Parentを設定する前にプロパティを設定してください。親への設定によってレプリケーションが行われるため、インスタンスは最終状態で一度だけレプリケーションされるようにします。- まだレプリケーションされていないオブジェクトは、クライアント側で
nilとして見えることがあります。参加直後はparent:WaitForChild("Name")を使って参照してください。 - 接続オブジェクトを保持し、終了時に切断してください。長時間有効な
:Connectハンドラーはメモリリークを引き起こし、破棄済みインスタンスでも実行されます。呼び出しが一度だけ想定される場合は:Onceを使ってください。 RemoteFunctionは呼び出し元をブロックするため、応答の遅いクライアントによってサーバーが停止することがあります。返信が本当に必要な場合を除き、一方向のRemoteEventを優先してください。
検証
- 既存のチェックを優先してください。
selene、stylua、luau-lsp、lune、rojo、またはプロジェクトのスクリプトを使います。 - 検証結果の確度を明示します。Studio で実行済み、静的チェック済み(lint、analyze、sourcemap)、準備済みだが未実行、または未検証のいずれかです。最後の3つを Studio での合格として提示してはいけません。
出力
- 変更点:変更したスクリプトと動作。
- サーバー/クライアントの境界:権威あるロジックの配置場所。
- Remote/DataStore のリスク:追加または変更したインターフェース。
- 検証:実際に実行したチェックと、上記の確度。
コメント
Markdown 対応