blushneybusiness-glitch/roblox-omniskills/rbx-assets-id-policy
Claude Code and agent skill by blushneybusiness-glitch/roblox-omniskills
- community
Checking that the SKILL.md file is still in the repository.
The anti-hallucination law made operational — where a legitimate id may come from, how to verify one before it ships, how to read the failure symptoms (grey X, silent Sound, blank ImageLabel), and the placeholder discipline that keeps a missing id visible instead of faked. Use when an asset "doesn't load", a texture renders grey, a sound plays nothing, an icon is blank, when the user asks "is this id real" or "why is this a grey X", and before writing any `rbxassetid://` into a script. Do not use for searching the catalog — load rbx-assets-toolbox or rbx-assets-audio — or for scanning an inserted model's scripts — load rbx-security-modelscan instead.
Install
npx vskill@latest install blushneybusiness-glitch/roblox-omniskills/rbx-assets-id-policySKILL.md
rbx-assets-id-policy
When to load
Before the first rbxassetid:// of any job; automatically inside every HYBRID skill (rbx-assets-toolbox, rbx-assets-audio, rbx-assets-web, rbx-audio-sfx, rbx-build-kitbash, rbx-vfx-textures); when any asset fails to render or play; when reusing ids out of asset-library.md or out of the user's own notes; and when a delivery is blocked on an id that does not exist yet. The law itself is asset-id-policy.md — this skill is the procedure around it.
The one law and why it is absolute
Never invent an id. A fabricated rbxassetid:// is not a small error: it renders as a grey X or plays silence in a shipped game, and it is the single clearest signal that content was generated rather than made. Training data is full of ids that were valid, were never valid, or belonged to assets since moderated away — none of that is a source. The only legitimate origins are the five tiers in the shared law: the user's memory library, rbxasset:// built-ins, assets you generated this session, a search_asset result from this session, and (last) a properly licensed and uploaded web asset.
Reading the URI scheme
| Prefix | Means | Fails how | |
|---|---|---|---|
rbxasset:// | Content shipped with the client (rbxasset://textures/…, rbxasset://sounds/…) | Wrong path = silent no-op; never a moderation risk | |
rbxassetid:// | A catalog asset by numeric id | Grey X, silent Sound, blank ImageLabel | |
rbxthumb:// | A rendered thumbnail of a user, asset, or place | Blank frame if the type/id pair is wrong |
Built-ins never expire and never get moderated, which is why they outrank the catalog for placeholder art, UI ticks, and particle textures. A numeric id is the only kind that can rot.
The verification procedure
Any id read from memory, from user notes, from a screenshot, or from a previous session is re-verified before it ships. GetProductInfo yields and throws on a bad id or an HTTP hiccup, so it is always wrapped:
Enum.InfoType.Asset covers catalog assets; GamePass and Product are separate namespaces and their numbers are not interchangeable (rbx-mtx-gamepasses, rbx-mtx-devproducts own those). For render-time proof rather than catalog proof, ContentProvider:PreloadAsync takes a callback whose second argument is an Enum.AssetFetchStatus — anything other than Success is a dead id, and it is the only check that catches an asset that exists in the catalog but will not load for players. For audio, the fast in-Studio tell is a loaded Sound whose TimeLength stays 0.
Failure symptoms → cause
- Grey X on a Decal/Texture, no console error — id does not exist, or the asset was
moderated away after it was catalogued. Verify, then replace; never leave it hoping.
- Blank `ImageLabel` while the same id works on a Decal — the catalog distinguishes the
Decal wrapper from the Image it contains. Take the id from the image entry in the search result, not from a Decal's page.
- Sound plays in Studio for the developer, silence for players — permission-gated audio.
Uploaded audio is private to its uploader's experiences until access is granted, and group games own audio through the GROUP, not the person (rbx-assets-audio).
- Worked last month, grey today — post-upload moderation removal. This is exactly why
library ids are pcall-re-verified on every reuse instead of trusted.
- Mesh loads, texture does not — the
TextureIDis a separate asset id from the
MeshId; one being valid says nothing about the other.
Placeholder discipline
When no real id exists yet, the missing id stays loud:
- A named constant at the top of the script per luau-contract.md
rule 4 — SOUND_PURCHASE = 0 -- TODO: real id — never a zero buried in the tree, never a plausible-looking number.
- The end-of-script summary lists every outstanding TODO by name.
- An entry in the game's
manual steps pending:queue inprojects.md
(MEMORY-PROTOCOL.md) so a later session resumes it instead of forgetting it.
- Where a visual gap would be confusing, an
rbxasset://built-in stands in and is labelled
as a stand-in — a working placeholder beats an empty frame, but only if the delivery notes say it is one.
Sharp edges
- CRITICAL — An id written from training memory because it "looks like the standard coin
sound". It ships broken and it is unrecoverable once the game is live and nobody remembers which of forty ids was guessed. Fix: every id traces to this session's search, a generation call, a built-in, or a pcall-verified library row.
- CRITICAL — Ids reused out of
asset-library.mdwithout re-verification. Moderation
removes assets months after they shipped; a dead id in a live game is worse than a placeholder. Fix: pcall on read, and delete the dead row with a dated note.
- HIGH — GamePass or DeveloperProduct numbers used as asset ids (or the reverse). They are
different namespaces; GetProductInfo with the wrong InfoType fails or returns something unrelated. Fix: verify with the matching InfoType before wiring.
- HIGH — "It works in Studio" accepted as verification for audio and for other users'
uploads. Studio runs as the developer, who has permissions players do not. Fix: permission check plus a play-mode listen, not an edit-mode one.
- MEDIUM — Placeholders written as
1234567890or a real-looking id "to be replaced
later". They stop looking like placeholders within one session. Fix: 0 -- TODO, always, plus the queue entry.
- MEDIUM — A grey X patched by swapping in another guessed id. Two guesses is not
debugging. Fix: run the verification procedure and read the symptom table above.
Load with
rbx-assets-toolbox and rbx-assets-audio (where legitimate ids come from), rbx-assets-sanitize (post-insert mechanics), rbx-memory-assets (the library rows and their re-verification cadence), rbx-handoff-uploads (when the id must be created by a human), rbx-assets (the tier ladder in full).
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
- SKILL.md in the repositoryCheckingskills/rbx-assets-id-policy/SKILL.md
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
[](https://verified-skill.com/skills/blushneybusiness-glitch/roblox-omniskills/rbx-assets-id-policy)