{"id":48152187,"url":"https://github.com/zaferdace/roblox-shipcheck","last_synced_at":"2026-04-04T17:13:20.640Z","repository":{"id":348686079,"uuid":"1194643361","full_name":"zaferdace/roblox-shipcheck","owner":"zaferdace","description":"Heuristic release checks for Roblox Studio projects, with deterministic results and an actionable report","archived":false,"fork":false,"pushed_at":"2026-04-02T09:42:07.000Z","size":617,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T00:30:46.651Z","etag":null,"topics":["ai-agents","audit","automation","compliance","content-maturity","developer-tools","game-development","mcp","mobile-qa","model-context-protocol","open-cloud","playtesting","release-readiness","roblox","roblox-studio","shipcheck","testing","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zaferdace.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-28T16:21:56.000Z","updated_at":"2026-04-02T09:42:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/zaferdace/roblox-shipcheck","commit_stats":null,"previous_names":["zaferdace/roblox-shipcheck"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/zaferdace/roblox-shipcheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaferdace%2Froblox-shipcheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaferdace%2Froblox-shipcheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaferdace%2Froblox-shipcheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaferdace%2Froblox-shipcheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zaferdace","download_url":"https://codeload.github.com/zaferdace/roblox-shipcheck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zaferdace%2Froblox-shipcheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31407644,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T10:20:44.708Z","status":"ssl_error","status_checked_at":"2026-04-04T10:20:06.846Z","response_time":60,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","audit","automation","compliance","content-maturity","developer-tools","game-development","mcp","mobile-qa","model-context-protocol","open-cloud","playtesting","release-readiness","roblox","roblox-studio","shipcheck","testing","typescript"],"created_at":"2026-04-04T17:13:19.944Z","updated_at":"2026-04-04T17:13:20.634Z","avatar_url":"https://github.com/zaferdace.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# roblox-shipcheck\n\n[![npm version](https://img.shields.io/npm/v/roblox-shipcheck)](https://www.npmjs.com/package/roblox-shipcheck)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![Node.js \u003e=18](https://img.shields.io/badge/node-%3E%3D18-brightgreen)](https://nodejs.org/)\n[![GitHub Stars](https://img.shields.io/github/stars/zaferdace/roblox-shipcheck?style=social)](https://github.com/zaferdace/roblox-shipcheck)\n[![MCP Compatible](https://img.shields.io/badge/MCP-compatible-brightgreen)](https://modelcontextprotocol.io/)\n\n**43 MCP tools for Roblox Studio — release audits, structural diffs, accessibility checks, playtester automation, and more.**\n\n`roblox-shipcheck` connects your AI client directly to a live Roblox Studio session via a companion plugin. Ask your AI to run a full release audit, compare two versions of your project, fix mobile UI issues, or script the Studio — all without leaving your editor.\n\n```text\n\"Run shipcheck on my experience\"\n→ Inspects security, DataStore safety, mobile UI, localization, and more\n→ Returns a verdict: SHIP / REVIEW / HOLD with a score out of 100\n→ Outputs Markdown + JSON\n```\n\n## Why roblox-shipcheck?\n\nRoblox ships move fast. Before you hit publish, you need to know:\n\n- Did I leave a RemoteEvent without server-side validation?\n- Did the last refactor break any DataStore pcall wrappers?\n- Are my buttons too small for mobile players?\n- Did I accidentally hardcode an API key?\n- What actually changed since the last build?\n\n`roblox-shipcheck` gives your AI the tools to answer those questions against your live Studio state — not a static file export. It reads your DataModel, inspects script sources, checks GUI sizes and contrast ratios, and returns structured findings with severity, confidence, and remediation guidance.\n\nIt is a pre-release review assistant, not a release gate. It can miss things and it can raise false positives. A passing report means \"nothing obvious was flagged,\" not \"safe to publish.\"\n\n## Quick Start\n\n### Step 1: Install the Studio Plugin\n\n1. Go to the [Releases page](https://github.com/zaferdace/roblox-shipcheck/releases)\n2. Download `RobloxShipcheck.rbxm` from the latest release\n3. Find your Roblox Studio plugins folder:\n   - **Windows:** `%LOCALAPPDATA%\\Roblox\\Plugins\\`\n   - **Mac:** `~/Documents/Roblox/Plugins/`\n   - **Or in Studio:** go to the **Plugins** tab → click **Plugins Folder**\n4. Copy `RobloxShipcheck.rbxm` into that folder\n5. Restart Roblox Studio — you should see a **\"Roblox Workflow MCP\"** toolbar\n\n### Step 2: Add the MCP Server\n\nAdd this to your AI client's MCP config (Claude Desktop, Cursor, VS Code + Copilot, Windsurf, Cline):\n\n```json\n{\n  \"mcpServers\": {\n    \"roblox-shipcheck\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"roblox-shipcheck\"]\n    }\n  }\n}\n```\n\n\u003e You need [Node.js](https://nodejs.org/) 18 or newer. `npx` downloads the server automatically on first use.\n\n### Step 3: Connect and Run\n\n1. Open a place in Roblox Studio\n2. Click **\"Toggle Connection\"** in the plugin toolbar\n3. Studio Output should show: `[RBX-MCP] Connected to bridge`\n4. Ask your AI: `\"Run shipcheck on my experience\"` or `\"Run a full pre-publish audit\"`\n\n**Example prompts:**\n\n```\nRun shipcheck on my experience and give me the full report.\n\nRun a prepublish audit — security and mobile categories only.\n\nSave a release baseline for my current project.\n\nCheck accessibility on all my GUI elements.\n\nWhat changed since my last baseline? Recommend audits for the diff.\n\nRun the spawn_flow smoke test and tell me if it passes.\n```\n\n## Tool Categories\n\n43 tools across 6 categories, all integration-tested against a live Studio session.\n\n### Core (18 tools) — Studio inspection and mutation\n\n| Tool | Description |\n|------|-------------|\n| `rbx_project_snapshot` | Capture the full DataModel tree |\n| `rbx_get_children` | List children of an instance |\n| `rbx_get_instance_properties` | Read all properties of an instance |\n| `rbx_get_selection` | Get current Studio selection |\n| `rbx_get_output` | Fetch Studio output log entries |\n| `rbx_search_project` | Search by class, name, or script content |\n| `rbx_get_script_source` | Read script source |\n| `rbx_set_script_source` | Write script source |\n| `rbx_execute_code` | Execute Lua code in Studio and capture output |\n| `rbx_create_instance` | Create a new instance |\n| `rbx_delete_instance` | Delete an instance |\n| `rbx_clone_instance` | Clone an instance |\n| `rbx_move_instance` | Move an instance to a new parent |\n| `rbx_set_instance_property` | Set a property on an instance |\n| `rbx_manage_tags` | Add, list, or remove CollectionService tags |\n| `rbx_manage_attributes` | Get, set, or delete instance attributes |\n| `rbx_start_playtest` | Start a Studio playtest |\n| `rbx_stop_playtest` | Stop a Studio playtest |\n\n### Shipcheck (14 tools) — Release audits and readiness\n\n| Tool | Description |\n|------|-------------|\n| `rbx_shipcheck_report` | Full release audit — all checks, Markdown + JSON output |\n| `rbx_prepublish_audit` | Categorized audit: security, performance, quality, mobile, accessibility |\n| `rbx_validate_mobile_ui` | Mobile UI check — touch target sizes, safe area, font size |\n| `rbx_accessibility_audit` | WCAG-style audit: contrast ratios, touch targets, text scaling, navigation |\n| `rbx_remote_contract_audit` | Inspect RemoteEvent/Function validation patterns |\n| `rbx_content_maturity_check` | Flag content maturity review candidates |\n| `rbx_datastore_schema_guard` | Check DataStore safety — pcall coverage, key patterns |\n| `rbx_localization_coverage_audit` | Detect hardcoded strings and localization gaps |\n| `rbx_marketplace_compliance_audit` | Check ProcessReceipt wiring and product setup |\n| `rbx_package_drift_audit` | Detect out-of-date or misconfigured PackageLinks |\n| `rbx_teleport_graph_audit` | Analyze TeleportService usage and graph structure |\n| `rbx_profile_runtime_hotspots` | Identify performance hotspots by instance counts and script size |\n| `rbx_release_diff` | Diff current project against a saved baseline; recommend targeted audits |\n| `rbx_release_readiness_gate` | Score-based go/no-go gate with configurable thresholds |\n\n### Automation (4 tools) — Fix planning and testing\n\n| Tool | Description |\n|------|-------------|\n| `rbx_apply_patch_safe` | Apply a patch to the DataModel with dry-run support |\n| `rbx_generate_fix_plan` | Map a goal to a step-by-step remediation plan |\n| `rbx_run_test_matrix` | Run TestService suites across server/client configurations |\n| `rbx_publish_place` | Publish a place via Open Cloud API |\n\n### Building (3 tools) — Studio scene building\n\n| Tool | Description |\n|------|-------------|\n| `rbx_lighting_preset` | Apply a lighting preset (Neon, Retro, Realistic, etc.) |\n| `rbx_terrain_generate` | Generate terrain fills and shapes |\n| `rbx_ui_builder` | Build nested GUI hierarchies from JSON descriptions |\n\n### Cloud (3 tools) — Open Cloud API\n\n| Tool | Description |\n|------|-------------|\n| `rbx_opencloud_experience_info` | Fetch universe and place metadata |\n| `rbx_asset_publish_status` | Check asset publish status |\n| `rbx_list_products` | List developer products and game passes |\n\n### Playtester (1 tool) — Structural smoke tests\n\n| Tool | Description |\n|------|-------------|\n| `rbx_playtester` | Run structural smoke tests: `spawn_flow`, `shop_flow`, `tutorial_flow`, `mobile_ux` |\n\n### Shooter Genre (3 tools) — Opt-in genre checks\n\n| Tool | Description |\n|------|-------------|\n| `rbx_shooter_weapon_remote_trust` | Analyze weapon Remote trust and validation patterns |\n| `rbx_shooter_spawn_clustering` | Check spawn placement fairness heuristics |\n| `rbx_shooter_combat_content_maturity` | Flag combat-related content for maturity review |\n\n## What Shipcheck Checks\n\nWhen you run `rbx_shipcheck_report`, it runs up to 10 checks and returns one report:\n\n- Remote security patterns (unvalidated handlers, payload sanitization)\n- DataStore safety (pcall coverage, transient failure handling)\n- Marketplace receipt and product wiring\n- Mobile UI readiness (touch targets, safe area)\n- Accessibility basics (contrast, text size, keyboard navigation)\n- Localization coverage (hardcoded string detection)\n- Teleport graph issues\n- Package drift\n- Content maturity flags (for manual review)\n- Performance hotspots (part counts, script sizes, UI depth)\n\nEach finding includes severity (`blocker`, `warning`, `info`), confidence (`high`, `medium`, `heuristic`, `manual_review`), and a recommendation.\n\n### Sample Report\n\n```markdown\n# Shipcheck Report — My Obby Game\n**Date:** 2026-03-29T18:00:00Z\n**Verdict:** REVIEW — Score: 72/100\n\n## Summary\n- Blockers: 0\n- Warnings: 3\n- Info: 2\n- Manual review needed: 2\n\n## Issues\n\n### Warnings\n#### [remote-001] Unvalidated RemoteEvent handler\n**Confidence:** high | **Category:** security | **Remediation:** assisted\nServer handler for \"PurchaseRequest\" does not validate argument types.\n**Evidence:** ServerScriptService.ShopHandler:14\n**Recommendation:** Add type checks for all RemoteEvent arguments.\n```\n\nSee [examples/](examples/) for full sample reports in Markdown and JSON.\n\n## Studio-Tested\n\n38 PASS, 4 SKIP, 1 PARTIAL. Tested against a live Roblox Studio session on 2026-03-29.\n\n| Category | Tools | Pass | Skip | Partial |\n|----------|-------|------|------|---------|\n| Core | 18 | 17 | 0 | 1 |\n| Shipcheck | 14 | 14 | 0 | 0 |\n| Shooter Genre | 3 | 3 | 0 | 0 |\n| Automation | 4 | 3 | 1 | 0 |\n| Building | 3 | 3 | 0 | 0 |\n| Cloud | 3 | 0 | 3 | 0 |\n| Playtester | 1 | 1 | 0 | 0 |\n| **Total** | **43** | **38** | **4** | **1** |\n\n- **Skip:** Cloud tools require an Open Cloud API key (schema validated, not callable without credentials).\n- **Partial:** `rbx_start_playtest` returns a plugin capability error (`StartDecal`). Playtest control may require manual interaction in some Studio configurations.\n\nSee [TESTING.md](TESTING.md) for the full per-tool test matrix.\n\n## What Shipcheck Does Not Do\n\n- It does not play your game or simulate users.\n- It does not certify compliance or guarantee publish safety.\n- It does not replace human QA or platform review processes.\n- It does not access runtime state, network traffic, or live player data.\n\n## Limitations\n\n- Content maturity checks are heuristic only. They flag review candidates, not policy violations.\n- Smoke tests verify that expected setup exists, not that a player flow works at runtime.\n- The verdict is a scoring rule based on issue counts, not a comprehensive release policy.\n- Some checks depend on Open Cloud API keys for full coverage.\n- Genre-specific checks use keyword and pattern matching. Unconventional architectures may produce false positives or missed detections.\n\n## Architecture\n\n```text\nMCP Client \u003c-stdio-\u003e MCP Server \u003c-http-\u003e Bridge Server \u003c-long-poll-\u003e Studio Plugin\n```\n\nThe server runs locally. The plugin connects over localhost (`127.0.0.1:33796`). All mutations use `ChangeHistoryService` for undo support.\n\n## Development\n\n```bash\ngit clone https://github.com/zaferdace/roblox-shipcheck.git\ncd roblox-shipcheck\nnpm install\nnpm run build\n```\n\nUseful scripts:\n\n- `npm run build` — compile TypeScript\n- `npm run dev` — watch mode\n- `npm run check` — full gate (tsc + eslint + prettier + publint)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for setup, code style, and the PR process.\n\nQuick summary:\n\n1. Fork and create a branch (`feat/` or `fix/`)\n2. Add your tool file, call `registerTool()`, import it in `register-all.ts`\n3. Run `npm run check` — must pass before opening a PR\n4. Open a PR against `main`\n\nCode style: TypeScript strict, no `any`, minimal comments, all imports use `.js` extension (ESM Node16 resolution).\n\n## Roadmap\n\n- More report examples and sample fixtures\n- Better baseline and diff support\n- CI-friendly report export\n- Improved smoke test presets with clearer pass/fail semantics\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaferdace%2Froblox-shipcheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzaferdace%2Froblox-shipcheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzaferdace%2Froblox-shipcheck/lists"}