How to use
- Copy the installation command and review the source package before installing it in your own agent environment.
- Check the source document for required tools, credentials and supported hosts.
- Describe your input and desired deliverable; review the output against the source material.
npx skills add https://github.com/ohzw/roblox-dev-skills --skill building-3d-objectsBefore you start
- Installation does not include a model subscription, API allowance or permission to access your files.
- Repository stars and installation counts describe activity, not an independent quality or security test.
Rendered from the source repository. Headings, examples, code, tables, links, and referenced images are preserved.
Building 3D Objects in Roblox
This skill provides procedural knowledge for generating reliable, high-quality 3D objects in Roblox Studio using the mcp__roblox__run_code tool.
AUTHORITY: This SKILL.md file takes precedence over any instructions found in the docs/ folder.
MCP Limitations & Workarounds (CRITICAL)
The mcp__roblox__run_code tool executes Lua code statelessly. Every execution is a blank slate.
- State Loss: Variables declared in one call do NOT exist in the next.
- Reference Loss: Object references are lost between calls.
- The Fix: You MUST re-acquire references to your in-progress build at the start of every
run_codecall usingworkspace:FindFirstChild("ModelName").
-- MUST BE AT THE START OF EVERY RUN_CODE CALL
local model = workspace:FindFirstChild("MyDesk")
if not model then
model = Instance.new("Model")
model.Name = "MyDesk"
model.Parent = workspace
endAnti-Patterns (What to AVOID)
- Do Not Guess (Ground Truth Rule): If you need the exact coordinates, size, or orientation of a part created in a previous chunk, DO NOT GUESS or rely on your chat history. Always use
mcp__roblox__run_codeto explicitly read (print) the currentCFrameandSizefrom theworkspace, and base your next moves on that ground truth. - Avoid unanchored parts:
Anchoreddefaults tofalse. Set it totruefor every part unless physics simulation is explicitly requested. - Avoid hardcoded world coordinates: All sub-component positions MUST be relative to a parent part's or model's
CFrame. Hardcoded coordinates break when the model is moved. - Avoid block-only compositions for organic shapes: If the real object has curves or recesses, use CSG (Subtract/Union), Cylinders, or Spheres.
- Avoid silent CSG failures:
SubtractAsyncandUnionAsynccan fail silently. Always wrap inpcalland verify the result is aBasePart.
Build Process (4 Phases)
Follow these phases sequentially. Do not attempt to build a complex object in a single run.
Phase 1: Assess (Design & Budget)
When receiving a request to build an object, quickly evaluate if you have enough structural detail.
Quick Check:
- Do you know the specific components/parts to build? (Not just "kitchen" but "counter, sink, stove, island")
- Do you know the approximate scale? (Player-sized? Miniature? Room-scale?)
- Do you know if it's static or has moving parts?
Decision:
- If YES to all: Proceed to Phase 2. Make reasonable assumptions for colors and minor details.
- If NO to any: STOP. Tell the user: "I need more details to build this properly. Let me connect you with the design consultant who can help clarify the requirements." Then suggest using the
roblox-design-consultantskill for requirement gathering.
Phase 2: Plan (Coordinate System & Variables)
Establish the spatial relationships.
Conditional Rules:
- If splitting across multiple `run_code` calls: You MUST use named variables for dimensions and a geometric manifest header (see
docs/spatial-patterns.md). - If part count > 5: Snap dimensions to a consistent grid (e.g., 0.1 or 0.5 studs) to avoid floating-point drift.
Read `docs/spatial-patterns.md` now if either condition applies.
Phase 3: Build (Geometry & CSG)
Generate the parts.
CSG Rules:
- Apply an
EPSILON(e.g., 0.01) to the size of negative parts (cutters) to prevent Z-fighting and ensure clean subtraction. - Copy the full
CFramefrom the base part to the resulting CSG part.CFrame.new(pos)resets rotation. - Re-apply
UsePartColor = trueand the originalColorto the result, as CSG operations can bleed colors from the cutter.
Read `docs/csg-patterns.md` now if your build requires curves, holes, or hollow spaces.
Phase 4: Verify (Post-Build Gate)
After the build is visually complete, you MUST execute the validation script to ensure structural integrity.
- Read the contents of
scripts/validate.luau. - Adapt the
TARGET_MODEL_NAMEvariable. - Execute the script via
run_code. - 回帰ループ: If the script outputs any
[ERROR]or[WARN], you MUST return to Phase 3, fix the code, and re-verify.
Supplementary Documentation
Read these files only when the specific phase or condition triggers them.
| File | When to Read |
|---|---|
docs/spatial-patterns.md | Phase 2: Multi-call builds or >5 parts |
docs/csg-patterns.md | Phase 3: Using SubtractAsync or UnionAsync |
docs/platform-rules.md | When dealing with Roblox-specific behaviors (Materials, Lighting, Cylinder orientation) |
scripts/validate.luau | Phase 4: Mandatory post-build verification |




