Agent skill
roblox-explorer
Efficient patterns for exploring Roblox instance trees using Lua eval. Use when you need to understand Roblox project structure, find instances, or trace data flow.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/roblox-explorer
SKILL.md
Roblox Instance Exploration
When using roblox_eval to explore instance trees, use these token-efficient patterns.
Principles
- Return tables, not prints -
return xnotprint(x) - Use short variable names -
local r={}notlocal results={} - One-liners when possible - Avoid verbose loops
- GetDescendants > recursive - Built-in is faster
- GetFullName for paths - Easy to trace back
Quick Patterns
List Children
-- Short: list names
return {game.Workspace:GetChildren()}
-- With class info
local r={}for _,v in game.Workspace:GetChildren()do r[v.Name]=v.ClassName end return r
Find by Class
-- All scripts in game
local r={}for _,v in game:GetDescendants()do if v:IsA("Script")then r[#r+1]=v:GetFullName()end end return r
-- All RemoteEvents
local r={}for _,v in game:GetDescendants()do if v:IsA("RemoteEvent")then r[#r+1]=v:GetFullName()end end return r
-- Generic pattern
local r={}for _,v in game:GetDescendants()do if v:IsA("CLASS")then r[#r+1]=v:GetFullName()end end return r
Find by Name Pattern
-- Contains "Spawn"
local r={}for _,v in game:GetDescendants()do if v.Name:find("Spawn")then r[#r+1]=v:GetFullName()end end return r
-- Starts with "NPC"
local r={}for _,v in game:GetDescendants()do if v.Name:sub(1,3)=="NPC"then r[#r+1]=v:GetFullName()end end return r
Get Script Source
return game.ServerScriptService.GameManager.Source
-- First 500 chars (preview)
return game.ServerScriptService.GameManager.Source:sub(1,500)
Get Properties
-- Specific properties
local p=workspace.SpawnPoint return{Pos=p.Position,Size=p.Size,Anchored=p.Anchored}
-- All attributes
return workspace.SpawnPoint:GetAttributes()
-- All tags
local CS=game:GetService("CollectionService")return CS:GetTags(workspace.SpawnPoint)
Tree Structure (Depth Limited)
-- 2-level tree
local function t(i,d)if d<1 then return"..."end local r={}for _,c in i:GetChildren()do r[c.Name.."("..c.ClassName..")"]=t(c,d-1)end return r end return t(game.ReplicatedStorage,2)
Search Patterns
Grep in Scripts
-- Find "FireServer" in all scripts
local r={}for _,v in game:GetDescendants()do
if v:IsA("LuaSourceContainer")and v.Source:find("FireServer")then
r[#r+1]=v:GetFullName()end end return r
Find References to Module
-- Who requires "Utilities"?
local r={}for _,v in game:GetDescendants()do
if v:IsA("LuaSourceContainer")and v.Source:find('require.-Utilities')then
r[#r+1]=v:GetFullName()end end return r
Find RemoteEvent Handlers
-- Find OnServerEvent connections
local r={}for _,v in game:GetDescendants()do
if v:IsA("Script")and v.Source:find("OnServerEvent")then
r[#r+1]=v:GetFullName()end end return r
Service Shortcuts
local WS=game.Workspace
local SSS=game:GetService("ServerScriptService")
local SS=game:GetService("ServerStorage")
local RS=game:GetService("ReplicatedStorage")
local SP=game:GetService("StarterPlayer")
local SG=game:GetService("StarterGui")
local PS=game:GetService("Players")
Output Formats
Compact List
return table.concat(results, "\n")
Name → Class Map
local r={}for _,v in parent:GetChildren()do r[v.Name]=v.ClassName end return r
Path List
-- GetFullName() gives "Workspace.Map.Building.Part"
r[#r+1]=v:GetFullName()
Count Only
local n=0 for _,v in game:GetDescendants()do if v:IsA("Part")then n=n+1 end end return n
Exploration Strategy
-
Start broad - List services, count descendants
lualocal r={}for _,s in{"Workspace","ServerScriptService","ReplicatedStorage","ServerStorage"}do r[s]=#game:GetService(s):GetDescendants()end return r -
Narrow down - Find entry points
lua-- Server scripts (entry points) local r={}for _,v in game.ServerScriptService:GetDescendants()do if v:IsA("Script")then r[#r+1]=v:GetFullName()end end return r -
Trace connections - Find RemoteEvents, requires
lua-- What remotes exist? local r={}for _,v in game.ReplicatedStorage:GetDescendants()do if v:IsA("RemoteEvent")or v:IsA("RemoteFunction")then r[#r+1]=v.Name end end return r -
Read specific scripts - Once you know what to look at
luareturn game.ServerScriptService.GameManager.Source
Common Mistakes
Too Verbose
-- BAD: 50+ tokens
local results = {}
for _, instance in ipairs(game:GetDescendants()) do
if instance:IsA("Script") then
table.insert(results, instance:GetFullName())
end
end
return results
-- GOOD: 25 tokens
local r={}for _,v in game:GetDescendants()do if v:IsA("Script")then r[#r+1]=v:GetFullName()end end return r
Forgetting Return
-- BAD: prints to Studio console, returns nil
for _,v in game:GetChildren()do print(v.Name)end
-- GOOD: returns data
return {game:GetChildren()}
Too Deep Recursion
-- BAD: manual recursion (slow, can stackoverflow)
local function recurse(i)...recurse(c)...end
-- GOOD: use built-in
game:GetDescendants() -- already recursive
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?