smithery/neversight

rojo-pro

Rojo expert for Roblox filesystem sync, project configuration, and professional development workflows.

Installation

$ npx skills add smithery/neversight --skill rojo-pro

Summary

  • Rojo expert for Roblox filesystem sync, project configuration, and professional development workflows.
  • Use when: setting up Rojo projects, configuring project.json files, troubleshooting sync issues, file naming conventions, multi-environment setups (dev/staging/prod), integrating with Wally/Aftman, or any 'rojo', 'project.json', 'sync', 'rojo serve', 'rojo build' questions.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/neversight · top by installs.

npx skills add smithery/neversight

Browse all from smithery/neversight

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,275 B
  • docs SUMMARY.md 393 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

Rojo Professional

You are a Rojo expert with deep knowledge of filesystem-based Roblox development. You understand project configuration, sync mechanics, file conventions, and production workflows.

Core Concepts

Rojo bridges filesystem <-> Roblox Studio:

  • Write code in VS Code/external editors
  • Sync to Studio via plugin (live reload)
  • Build .rbxl/.rbxm files for deployment
  • Enable Git version control for Roblox projects

Current Version: 7.6.1 stable, 7.7.0-rc.1 with websocket sync and syncback

Quick Reference

Essential Commands

# Initialize new project
rojo init my-game

# Start dev server (connects to Studio plugin)
rojo serve

# Serve specific project file
rojo serve dev.project.json

# Build standalone file
rojo build -o game.rbxl
rojo build deploy.project.json -o game.rbxl

# Generate sourcemap (for luau-lsp type checking)
rojo sourcemap default.project.json -o sourcemap.json

# Install Studio plugin
rojo plugin install

File Naming Conventions

File Pattern Roblox Instance
*.server.luau Script (runs on server)
*.client.luau LocalScript (runs on client)
.luau or .lua ModuleScript
init.server.luau Directory becomes Script
init.client.luau Directory becomes LocalScript
init.luau Directory becomes ModuleScript
*.model.json Custom model definition
*.meta.json Metadata for sibling file/folder
.rbxm / .rbxmx Binary/XML model files
*.txt StringValue
*.csv LocalizationTable

Project File Structure

{
  "name": "MyGame",
  "tree": {
    "$className": "DataModel",
    "ReplicatedStorage": {
      "$className": "ReplicatedStorage",
      "Shared": { "$path": "src/Shared" },
      "Packages": { "$path": "Packages" }
    },
    "ServerScriptService": {
      "$className": "ServerScriptService",
      "Server": { "$path": "src/Server" }
    },
    "ReplicatedFirst": {
      "$className": "ReplicatedFirst",
      "Client": { "$path": "src/Client" }
    },
    "StarterPlayer": {
      "$className": "StarterPlayer",
      "StarterPlayerScripts": {
        "$className": "StarterPlayerScripts",
        "$path": "src/StarterPlayerScripts"
      }
    }
  }
}

Tree Node Properties

  • $className - Roblox class (required for services, optional with $path)
  • $path - Filesystem path to sync
  • $properties - Instance properties
  • $ignoreUnknownInstances - Don't delete untracked instances (useful for terrain)
  • Any other key - Child instance name

Optional Project Settings

{
  "servePort": 34872,
  "servePlaceIds": [123456789],
  "placeId": 123456789,
  "gameId": 987654321,
  "globIgnorePaths": ["**/*.spec.luau", "**/test/**"],
  "emitLegacyScripts": true
}

Decision Guidance

When to consult references:

  • Project setup patterns -> See [patterns.md](references/patterns.md)
  • Troubleshooting sync issues -> See [sharpedges.md](references/sharpedges.md)
  • Multi-environment configs -> See [patterns.md](references/patterns.md)

Common Patterns

Multi-Project Setup (Dev/Prod)

project/
├── default.project.json    # Development (rojo serve)
├── deploy.project.json     # Production build
├── src/
├── Packages/
└── ...

Library/Package Distribution

Minimal config for distributing a standalone module:

{
  "name": "my-library",
  "tree": {
    "$path": "src"
  }
}

Setting Instance Properties

{
  "$className": "Part",
  "$properties": {
    "Anchored": true,
    "Size": [4, 1, 2],
    "Color": [1, 0, 0],
    "BrickColor": { "BrickColor": "Bright red" },
    "Material": { "Enum": "Material.Neon" }
  }
}

Preserving Studio-Created Instances

{
  "Workspace": {
    "$className": "Workspace",
    "$ignoreUnknownInstances": true,
    "GameContent": { "$path": "src/Workspace" }
  }
}

Integration with Toolchain

Aftman (Tool Management)

# aftman.toml
[tools]
rojo = "rojo-rbx/[email protected]"
wally = "UpliftGames/[email protected]"
stylua = "JohnnyMorganz/[email protected]"
selene = "Kampfkarren/[email protected]"
luau-lsp = "JohnnyMorganz/[email protected]"

Wally (Package Management)

# wally.toml
[package]
name = "author/my-game"
version = "1.0.0"
realm = "shared"
registry = "https://github.com/UpliftGames/wally-index"

[dependencies]
Promise = "evaera/[email protected]"
Signal = "sleitnick/[email protected]"

Packages install to Packages/ and must be mapped in project file.

Type Checking Setup

# Generate sourcemap for luau-lsp
rojo sourcemap default.project.json -o sourcemap.json

# Generate Wally package types
wally-package-types --sourcemap sourcemap.json Packages

After Cloning a Repo

If Packages/ is missing or you see "path does not exist" errors:

wally install                                           # Install packages from wally.toml
rojo sourcemap default.project.json -o sourcemap.json   # Regenerate sourcemap

Packages/ is gitignored - it must be regenerated after every clone.

Anti-Patterns

DON'T:

  • Edit files in Studio while Rojo is connected (changes will be overwritten)
  • Use spaces in file/folder names (use PascalCase or snake_case)
  • Forget $className for Roblox services
  • Mix .lua and .luau extensions inconsistently
  • Put server code in ReplicatedStorage (security risk)
  • Commit Packages/ to git (it's generated by wally install)
  • Forget to run wally install after cloning (Packages/ won't exist)

DO:

  • Use .luau extension consistently (Roblox's official Lua dialect)
  • Keep sourcemap updated after changing project structure
  • Use init.luau for folder-as-module pattern
  • Add Packages/ to .gitignore
  • Use multi-project setup for different environments