← Files Build 3D Game RoomsARCHIVED FILE
skills/build-3d-game-rooms/scripts/create_room.py
1.34 KB · Sep 30, 2026 · 23:15 UTC
#!/usr/bin/env python3
"""Create a portable room evidence package from the skill templates."""
from __future__ import annotations
import argparse
import shutil
from pathlib import Path
def main():
parser = argparse.ArgumentParser()
parser.add_argument("room_id")
parser.add_argument("--family", required=True, choices=("display-gallery", "gameplay-room", "social-hub", "custom"))
parser.add_argument("--output", type=Path, required=True)
args = parser.parse_args()
if not args.room_id or any(char not in "abcdefghijklmnopqrstuvwxyz0123456789-" for char in args.room_id):
raise SystemExit("room_id must use lowercase letters, digits, and hyphens")
if args.output.exists() and any(args.output.iterdir()):
raise SystemExit(f"output must be absent or empty: {args.output}")
templates = Path(__file__).resolve().parent.parent / "assets" / "templates"
args.output.mkdir(parents=True, exist_ok=True)
for name in ("images", "meshes", "masks", "renders", "runtime", "plans"):
(args.output / name).mkdir()
for source in templates.glob("*.json"):
text = source.read_text(encoding="utf-8").replace("__ROOM_ID__", args.room_id).replace("__FAMILY__", args.family)
(args.output / source.name).write_text(text, encoding="utf-8")
print(args.output.resolve())
if __name__ == "__main__":
main()
SHA-256: a4daff36e61ca7e2dd8b423ae52b50ff13218017e45d49f713c26129ab5d8d70