blushneybusiness-glitch/roblox-omniskills/rbx-assets-sanitize

Claude Code and agent skill by blushneybusiness-glitch/roblox-omniskills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

The mechanical cleanup that turns a cleared insert into a native-feeling asset — scripts stripped to the modelscan verdict, dead welds and watermark decals removed, scale measured against the metric table, pivot seated, anchoring and collision flags set, names rewritten out of the creator's voice. Use when an `insert_asset` has just landed, when the user says "clean up this model", "it's the wrong size", "this thing won't stay still", "fix the free model", or when an inserted asset floats, sinks, blocks the player, tanks the frame rate, or drags `Part47`-style names into the tree. Do not use to judge whether the model's scripts are malicious — load rbx-security-modelscan first — or to compose several inserts into one scene — load rbx-build-kitbash instead.

Install

npx vskill@latest install blushneybusiness-glitch/roblox-omniskills/rbx-assets-sanitize

SKILL.md

rbx-assets-sanitize

Laws

  1. Verdict first, cleanup second. This skill runs only on a model whose

rbx-security-modelscan verdict is clean, scripts-stripped, or rebuilt. No verdict means the model is still in quarantine and nothing here touches it.

  1. Measure, never eyeball. GetExtentsSize() against the rbx-build-scale table, then

Model:ScaleTo(factor) on the whole model — scaling individual parts breaks welds, meshes, and any attachment offsets the asset shipped with.

  1. Everything static is Anchored. An unanchored store model is a physics bill and a

comedy: buildings drift, props fall through, assemblies explode on first contact. Anchor the whole tree, then unanchor only the parts that must simulate.

  1. Decorative geometry gets all three flags. CanCollide = false, CanQuery = false,

CanTouch = false. Two out of three still costs raycast and touch work every frame in crowded scenes.

  1. The tree ships in your naming voice. Model, MeshPart, Union, Part47, and the

creator's signature parts are a delivery tell as loud as bad scale. Rename to the game's convention before it enters workspace.

Passes

  1. Census — inspect_instance on the quarantined root, then one execute_luau that

prints the counts that decide the rest: total parts, MeshParts and Unions, remaining scripts, Decals/Textures, welds and constraints, unanchored parts, and GetExtentsSize(). get_console_output after. This is the work order.

  1. Strip — destroy every script the verdict says goes; then the debris a store model

carries: dead Weld/ManualWeld/Motor6D left from the creator's rig, BodyVelocity and other legacy movers, SurfaceGui ad boards, watermark and signature Decals, empty Folders, disabled test parts, and sealed interior geometry the player can never see — store buildings routinely hide 100+ such parts.

  1. Scale — extents vs the metric table: R15 is ≈ 5 studs tall, a usable doorway is 10–12

studs high and 5–6 wide, a table sits ≈ 3 studs. Compute one factor, ScaleTo once, then re-measure and record the factor in the delivery notes and in memory. Snap the result to the map's 4-stud grid where the modular kit lives.

  1. Seat — set the pivot to the logical base (PivotTo with the model's base plane on the

floor, not its centroid) so future placement lands on the ground rather than half-buried. Verify with a single screen_capture at the player's approach angle: floating and sunken are the two failures nobody catches from the Explorer.

  1. Physics flags — Anchored = true across the static tree; CollisionFidelity = Box on

props players don't walk through, Hull for simple solids, PreciseConvexDecomposition only for walkable or complex-collide geometry; RenderFidelity = Automatic unless the asset is inspected up close; law 4's three flags on decoration. Where the asset must be walk-through but still visible, register it into a collision group (PhysicsService:RegisterCollisionGroup, CollisionGroupSetCollidable(group, "Default", false), then part.CollisionGroup = group) rather than sprinkling per-part exceptions.

  1. Rename & verify — rename the root and every meaningful child to the game's convention,

re-run the census for a before/after line, then screen_capture at 15–30 stud gameplay distance. Fix what the shot shows, max 3 rounds per quality-bars.md.

Performance budget

Six passes in ≤ 4 execute_luau chunks — census, strip, transform, flags — each idempotent so a re-run does not double-destroy or double-scale. Never one call per part: a 400-part model is one GetDescendants loop, not 400 tool calls. Post-sanitize targets on the low-end mobile reference: no unanchored static parts, zero scripts beyond what the verdict kept, Box collision on everything decorative, and ≤ 20 unique store meshes per zone (rbx-build-kitbash owns the zone-level count).

Load with

rbx-security-modelscan — the gate that must precede this, don't ask, include it. rbx-build-scale supplies the metric table pass 3 measures against; rbx-build-kitbash takes over for scene composition, palette unification, and seam hiding; rbx-assets-toolbox and rbx-assets-web are the two lanes that feed this skill; rbx-memory-assets stores the scale factor so the next insert of the same asset skips pass 3.

AI-tells

  • ☐ Model placed into workspace before the modelscan verdict exists
  • ☐ Scale "looked right" — extents never measured against the table
  • ☐ Individual parts resized instead of Model:ScaleTo, breaking welds and offsets
  • ☐ Static parts left unanchored; assemblies drifting or falling on first touch
  • ☐ Pivot untouched — asset floats above the floor or sinks into it
  • ☐ Decoration blocking the player, or set CanCollide = false with query and touch still on
  • ☐ Mesh collision left at the import default on a 5,000-triangle prop
  • ☐ Creator naming voice, watermark decals, or ad SurfaceGuis left in the tree
  • ☐ Dead welds, legacy body movers, and sealed interior parts still shipping

Memory

Read: asset-library.md for a prior sanitize of the same id — the stored scale factor and collision settings make this a one-pass job; the game's projects.md block for the naming convention, grid size, and collision-group names already in use. Write: the scale factor, collision-fidelity choice, and pivot fix onto that asset's asset-library.md row the moment it ships; any new collision group into the game's projects.md block; a standing user rule ("all toolbox props go in the Decor group") into preferences.md per MEMORY-PROTOCOL.md.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/blushneybusiness-glitch/roblox-omniskills/rbx-assets-sanitize/badge)](https://verified-skill.com/skills/blushneybusiness-glitch/roblox-omniskills/rbx-assets-sanitize)

Something wrong with this skill or its page? Tell us.