Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
dig1t avatar

Rblxsync

  • 2 installs
  • Updated July 25, 2026
  • dig1t/rblxsync

Declaratively manages Roblox experience metadata (game passes, developer products, badges, places) from one YAML file via the rblxsync CLI and GitHub Action.

About

Sets up and runs rblxsync, a Rust CLI plus GitHub Action that syncs Roblox Universe settings, game passes, developer products, badges and places from a YAML file over the Open Cloud API. A developer uses it to author rblxsync.yml, preview diffs, publish places and wire the generated Config.luau into Luau game code.

  • One rblxsync.yml is the source of truth for game passes, developer products, badges and places
  • Idempotent sync via Open Cloud API with dry-run preview and generated Config.luau

Rblxsync by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #1,839 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
  • Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/dig1t/rblxsync --skill rblxsync

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
Last updatedJuly 25, 2026
Repositorydig1t/rblxsync

What it does

Declaratively manages Roblox experience metadata (game passes, developer products, badges, places) from one YAML file via the rblxsync CLI and GitHub Action.

Files

SKILL.mdMarkdownGitHub ↗

rblxsync

rblxsync is a Rust CLI + GitHub Action that declaratively manages Roblox experience metadata via the Open Cloud API. One YAML file (rblxsync.yml) is the source of truth for Universe settings, Game Passes, Developer Products, Badges, and Places. Running it is idempotent: resources are matched by name (case-insensitive), created if missing, updated (PATCH) if present.

Use this skill to set rblxsync up in a user's Roblox project, author/edit their config, run syncs safely, and wire the generated Config.luau into game code.

Mental model (read this first)

  • `rblxsync.yml` = desired state, hand-edited, committed.
  • `rblxsync-lock.yml` = generated state (resource IDs + icon hashes).

Commit it. Never hand-edit it — it is overwritten on the next sync.

  • `Config.luau` (only if output_path is set) = generated, typed Luau module

of all resource IDs. Game code requires it. Never hand-edit it.

  • Matching is by name. Renaming a resource in the YAML makes rblxsync think

it is a new resource (it creates a second one) rather than renaming the old. To rename, change it in Roblox/lock state, not just the YAML. Flag this to the user before any rename.

Golden rules

1. Never run a mutating sync without previewing first. Always do rblxsync run --dry-run and show the user the diff before rblxsync run. 2. Never commit, print, or paste `ROBLOX_API_KEY` or `ROBLOX_COOKIE`. They live in a gitignored .env (local) or CI secrets. Treat them like passwords. 3. The `--config` flag is global and goes BEFORE the subcommand. rblxsync --config prod.yml run ✅ — rblxsync run --config prod.yml ✗. 4. Creating a badge costs 100 Robux each. Confirm with the user before a sync that adds new badges. 5. Confirm before destructive or paid actions: new badges (Robux), publishing places (goes live), any first real run.

Setup workflow (new project)

Run these steps when adding rblxsync to a codebase that doesn't have it yet.

1. Confirm install. Check rblxsync --version / which rblxsync. If absent, install (cargo install --path . from source, or a tool-manager pin once binaries are published — see references/cli-and-ci.md). 2. Create `.env` with ROBLOX_API_KEY=... and ensure .env is gitignored. Add ROBLOX_COOKIE=... only if the config will set universe settings (see the cookie gotcha below). Never write real secret values yourself — leave placeholders and tell the user to fill them in. 3. Write a minimal `rblxsync.yml` — only universe.id is required. Start small; add sections incrementally. Copy assets/rblxsync.example.yml as a starting point and trim it to what the user actually needs. 4. Validate: rblxsync validate (no API key / network needed). 5. Preview: rblxsync --config rblxsync.yml run --dry-run. 6. Apply: rblxsync run once the user approves the preview. 7. Commit rblxsync.yml and rblxsync-lock.yml (NOT .env). If output_path is set, commit the generated Config.luau too.

Minimal config

Only universe.id is required:

universe:
  id: 123456789

game_passes:
  - name: "VIP Pass"
    price: 100

For the full field-by-field schema, defaults, and every gotcha, read references/config-schema.md. A complete annotated sample is in assets/rblxsync.example.yml.

Commands

CommandWhat it does
rblxsync run [--dry-run]Sync universe settings + game passes, products, badges. Default command. Writes rblxsync-lock.yml and (if set) Config.luau.
rblxsync publishPublish .rbxl places where publish: true. Always publishes (no "save"). Does NOT need the cookie.
rblxsync validateParse + check the YAML (dup names, etc.). No API key, no network.
rblxsync export [-o PATH] [--lua]One-way snapshot of live resources to a flat Luau/Lua table. NOT a config you can feed back in, and NOT the same shape as Config.luau.

Full command reference, flags, the GitHub Action, environment variables, and Open Cloud permission scopes are in references/cli-and-ci.md.

The cookie gotcha (very common error)

rblxsync run hard-fails demanding `ROBLOX_COOKIE` whenever any universe field is set — including genre and max_players, which are local-only and never actually call a cookie API. So a config that sets only genre still requires the cookie even though no cookie request is made.

If a user hits "ROBLOX_COOKIE is not set" and doesn't want to provide a cookie, the fix is to *remove all `universe. fields except id** from the config (move name/description/etc. tracking elsewhere). Universe *settings* updates use .ROBLOSECURITY cookie auth against develop.roblox.com — an API key alone cannot update them. See references/cli-and-ci.md` for how to obtain the cookie safely.

Fields that don't sync (surface these, don't silently rely on them)

  • `genre` and `max_players` — tracked in lock/Config.luau but **never

pushed to Roblox** (max_players is a per-place setting).

  • Developer Product `is_active` — parsed but not synced; has no effect.
  • Game Pass `is_for_sale` — this one is synced.

Do not type game code against a Developer Product IsActive field — the generated DeveloperProduct type has no such field ({ Id, Name, Description, Price }).

Integrating with game code

If the user wants resource IDs available in Luau, set output_path (e.g. src/shared/Config.luau or a Rojo-mapped path) and require the generated module:

local Config = require(game.ReplicatedStorage.Shared.Config)
local vipId = Config.GamePasses[1].Id
print(Config.Universe.Name)

Wiring it cleanly (lookup by name, Rojo paths, regenerate-on-sync, lock-file commits) is covered in references/integration.md — read it before editing a user's existing Luau to consume rblxsync output.

Adding to CI

A ready-to-use workflow template is in assets/github-workflow-sync.yml. Copy it to .github/workflows/, set repo secrets (ROBLOX_API_KEY, optionally ROBLOX_COOKIE), and pin the action to a published ref (e.g. @v0.1.0). The CI gotchas (the args input word-splits and cannot contain spaces; only published tags exist) are in references/cli-and-ci.md.

When unsure

  • Schema / field semantics / defaults → references/config-schema.md
  • CLI flags, Action inputs, env vars, permission scopes → references/cli-and-ci.md
  • Consuming output in Luau, lock-file handling, idempotency → references/integration.md
  • Authoritative upstream docs: the project's README.md and docs/API.md.

Related skills

Automation & Workflowsintegrationsdevops

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.