Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/brockmartin/roblox-game-skill/llms.txt

Use this file to discover all available pages before exploring further.

Standard Mode activates when the skill detects the official Roblox MCP server (Roblox/studio-rust-mcp-server) without the community server also being present. While the toolset is smaller than Full Mode’s 39 tools, the 6 tools available are carefully chosen: run_code can execute any Luau you write, so exploratory and build operations that Full Mode handles with dedicated tools can be replicated through scripted traversal and printed output. Standard Mode is fully capable of building, debugging, and playtesting games — it simply requires a few extra steps for project exploration.

Detection

The skill enters Standard Mode when the following tool names are found and no Full Mode tools are present:
Probe ToolRole
run_codeTriggers Standard Mode detection
insert_modelSecondary confirmation
get_console_outputSecondary confirmation
start_stop_playSecondary confirmation
All six tools listed below will be available once the official server is connected.

Tool Reference

ToolPurposeNotes
run_codeExecute Lua/Luau code inside StudioEquivalent to Full Mode’s execute_luau — the primary workhorse for all create, modify, and explore operations
insert_modelInsert a model from the Creator StoreTakes an asset ID; inserts into Workspace by default
get_console_outputRead Studio’s output/console logUse for error detection and to capture results of exploratory scripts
start_stop_playToggle playtest mode on/offSingle tool handles both start and stop; check get_studio_mode first to know current state
run_script_in_play_modeExecute code during an active playtestAutomatically stops the playtest when the script finishes
get_studio_modeCheck whether Studio is in Edit or Play modeAlways call before mode-sensitive operations to avoid losing changes

Limitations vs Full Mode

Standard Mode lacks the dedicated exploration tools that Full Mode provides out of the box. Specifically, there is no get_file_tree, grep_scripts, search_objects, get_script_source, get_instance_properties, or create_build. The skill compensates by using run_code to execute traversal scripts that print structure to the console, then reading that output back with get_console_output.
Because Standard Mode has no get_file_tree or grep_scripts, large project exploration takes more round-trips. If you find yourself doing extensive project archaeology or bulk operations frequently, consider upgrading to the community MCP server for Full Mode access.

Compensating for Missing Exploration Tools

The following run_code script replicates get_file_tree by traversing the DataModel and printing indented output. Run it, then call get_console_output to capture the result.
-- Mimics get_file_tree — run via run_code, then read with get_console_output
local function printTree(instance, indent)
    indent = indent or 0
    print(string.rep("  ", indent) .. instance.ClassName .. ": " .. instance.Name)
    for _, child in ipairs(instance:GetChildren()) do
        printTree(child, indent + 1)
    end
end
printTree(game)
Similarly, to search for a pattern across scripts (replicating grep_scripts):
-- Mimics grep_scripts — searches all Script/LocalScript/ModuleScript sources
local pattern = "RemoteEvent"  -- replace with your search term

local function searchScripts(root)
    for _, desc in ipairs(root:GetDescendants()) do
        if desc:IsA("LuaSourceContainer") then
            if string.find(desc.Source, pattern) then
                print(desc:GetFullName())
            end
        end
    end
end
searchScripts(game)

Typical Debug Loop

The most common Standard Mode workflow is a tight cycle: run some code, read the console, fix the error, repeat.
1

Check Studio mode

Call get_studio_mode to confirm Studio is in Edit mode before executing any DataModel-modifying code. Changes made during an active playtest are discarded when the session ends.
2

Run the code under test

Use run_code to execute the script or snippet you want to test. Include print() calls around logic boundaries so the output is readable.
-- Example: verify a RemoteEvent exists and is wired correctly
local re = game:GetService("ReplicatedStorage"):FindFirstChild("DamageEvent")
if re then
    print("DamageEvent found:", re:GetFullName())
else
    print("ERROR: DamageEvent not found in ReplicatedStorage")
end
3

Read the console

Call get_console_output immediately after run_code returns. Parse the output for ERROR, Lua:, stack trace markers, or your custom print statements.
4

Apply the fix

Use run_code to patch the offending script. Always read the current source first by printing it, then apply a targeted modification rather than a blind overwrite:
-- Step 1: read current source
local script = game:GetService("ServerScriptService"):FindFirstChild("GameManager")
if script then
    print(script.Source)
end
-- Step 2: apply fix (run in a separate run_code call after reviewing output)
local script = game:GetService("ServerScriptService"):FindFirstChild("GameManager")
-- Replace only the broken line using string manipulation, or assign .Source in full
script.Source = script.Source:gsub(
    'workspace.BadPart.Position',
    'workspace:FindFirstChild("Part") and workspace.Part.Position or Vector3.zero'
)
print("Patch applied")
5

Start playtest and verify

Toggle play mode with start_stop_play, then call get_console_output again to confirm the error no longer appears. When done, call start_stop_play a second time to exit play mode.
6

Iterate (max 5 attempts)

If the error persists, return to Step 3. After five attempts without resolution, report the findings and suggest manual investigation in Studio.
Use run_script_in_play_mode to inject diagnostic code into a running playtest without stopping it first. This is ideal for checking live server state — player counts, DataStore cache contents, or event connection counts — that only exist at runtime. The playtest ends automatically when the injected script completes.

Build docs developers (and LLMs) love