RbxGenie imposes strict guidelines to prevent tool overuse, reduce token costs, and improve performance. Follow these rules when building AI agents.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/nnaridz/RbxGenie/llms.txt
Use this file to discover all available pages before exploring further.
Core Principle: Think Before You Call
DO NOT OVERUSE TOOLS. You are strictly penalized for unnecessary tool calls. Read code and think instead of using trial-and-error.Anti-Tool Overuse Rules
1. NO BLIND EXPLORATION
Callsummarize_game ONCE per session if you have no prior context. Do NOT call it again if you already have the result in context.
NEVER call get_file_tree or get_project_structure without a scoped path:
2. NO RE-FETCHING
If you already fetched a file or tree, rely on your context memory. Do not call info tools twice for the same data.3. NO TRIAL-AND-ERROR
Do not spamexecute_luau or run_script_in_play_mode to guess how things work. Use get_script_source to read the code and figure it out.
4. USE BULK TOOLS
Always use bulk operations instead of multiple individual calls:mass_set_propertyinstead of multipleset_propertymass_create_objectsinstead of multiplecreate_objectmass_duplicateinstead of multiplesmart_duplicatemass_get_propertyinstead of multiple property queries
Scoping Rules
Always scope search and query operations:| Tool | Rule |
|---|---|
get_file_tree | Always set "path" to a specific service; never "path": "game" without "depth": 1 |
get_instance_children | Only "recursive": true with narrow path; max 200 results |
search_files / search_objects | Always supply "path" |
search_by_property | Always supply "path" and "className" |
Playtesting Guidelines
Playtesting is EXPENSIVE and PRONE TO FREEZING. Do NOT playtest unless absolutely necessary.Only Playtest When:
- Building something from scratch — a new system, feature, or major component.
- Making a large/complex change that affects runtime behavior across multiple scripts.
- You keep hitting errors and cannot figure out the root cause from code inspection alone.
Do NOT Playtest When:
- Changing a single property, renaming, or tweaking values.
- Editing a few lines of a script.
- The change is purely structural (reparenting, reorganizing).
- You are confident the change is correct from reading the code.
Anti-Freeze Protocol
ALWAYS specify a lowtimeout parameter (e.g., 30 seconds) when using run_script_in_play_mode:
Token Cost Optimization
Minimize Context Usage
- Read only what you need: Don’t fetch entire scripts if you only need to check a few lines.
- Use line ranges:
edit_script_lineswith precisestartLine/endLineinstead of rewriting entire scripts. - Batch operations: Combine multiple related changes into a single bulk call.
Efficient Code Reading
Prefer Calculated Properties
Useset_calculated_property for mathematical transformations:
Tool Call Limits
Absolute Maximums
- get_file_tree: Max 200 instances returned
- get_instance_children (recursive): Max 200 instances returned
- search_files / search_objects: Max 50 results
- execute_luau / run_script_in_play_mode: 120s timeout (override with lower value)
Recommended Batch Sizes
- mass_set_property: Up to 100 paths per call
- mass_create_objects: Up to 50 objects per call
- mass_duplicate: Up to 50 instances per call
Keep It Simple — No Overengineering
Do NOT overengineer. Deliver exactly what was asked — nothing more.- If the request is simple, the solution must be simple.
- Do not add extra abstractions, helper modules, config layers, or “future-proof” patterns unless explicitly requested.
- Do not refactor surrounding code that wasn’t part of the request.
- Do not create unnecessary wrapper functions or utility modules.
- Fewer lines is better. Ship the minimal correct solution.
Summary Checklist
Before calling a tool, ask:- ✅ Have I already called this tool with the same arguments?
- ✅ Can I use a bulk operation instead of multiple individual calls?
- ✅ Have I scoped the operation with a specific
path? - ✅ Am I using the minimum depth/limit necessary?
- ✅ Can I read code instead of executing trial-and-error?
- ✅ Do I really need to playtest this change?
- ✅ Is this the simplest solution to the user’s request?