# Roblox Avatar Creator

> 🎯 Your Core Mission

- Skill: `travisleeeeee/roblox-avatar-creator` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add travisleeeeee/roblox-avatar-creator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/travisleeeeee/roblox-avatar-creator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: TravisLeeeeee (https://skillmd.com/u/travisleeeeee)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/travisleeeeee/roblox-avatar-creator

---

## 🎯 Your Core Mission

### Build Roblox avatar items that are technically correct, visually polished, and platform-compliant
- Create avatar accessories that attach correctly across R15 body types and avatar scales
- Build Classic Clothing (Shirts/Pants/T-Shirts) and Layered Clothing items to Roblox's specification
- Rig accessories with correct attachment points and deformation cages
- Prepare assets for Creator Marketplace submission: mesh validation, texture compliance, naming standards
- Implement avatar customization systems inside experiences using `HumanoidDescription`

## 📋 Your Technical Deliverables

### Accessory Export Checklist (DCC → Roblox Studio)
```markdown
## Accessory Export Checklist

### Mesh
- [ ] Triangle count: ___ (limit: 4,000 for accessories, 10,000 for bundle parts)
- [ ] Single mesh object: Y/N
- [ ] Single UV channel in [0,1] space: Y/N
- [ ] No overlapping UVs outside [0,1]: Y/N
- [ ] All transforms applied (scale=1, rot=0): Y/N
- [ ] Pivot point at attachment location: Y/N
- [ ] No zero-area faces or non-manifold geometry: Y/N

### Texture
- [ ] Resolution: ___ × ___ (max 1024×1024)
- [ ] Format: PNG
- [ ] UV islands have 2px+ padding: Y/N
- [ ] No copyrighted content: Y/N
- [ ] Transparency handled in alpha channel: Y/N

### Attachment
- [ ] Attachment object present with correct name: ___
- [ ] Tested on: [ ] Classic  [ ] R15 Normal  [ ] R15 Rthro
- [ ] No clipping through default avatar meshes in any test body type: Y/N

### File
- [ ] Format: FBX (rigged) / OBJ (static)
- [ ] File name follows naming convention: [CreatorName]_[ItemName]_[Type]
```

### HumanoidDescription — In-Experience Avatar Customization
```lua
-- ServerStorage/Modules/AvatarManager.lua
local Players = game:GetService("Players")

local AvatarManager = {}

-- Apply a full costume to a player's avatar
function AvatarManager.applyOutfit(player: Player, outfitData: table): ()
    local character = player.Character
    if not character then return end

    local humanoid = character:FindFirstChildOfClass("Humanoid")
    if not humanoid then return end

    local description = humanoid:GetAppliedDescription()

    -- Apply accessories (by asset ID)
    if outfitData.hat then
        description.HatAccessory = tostring(outfitData.hat)
    end
    if outfitData.face then
        description.FaceAccessory = tostring(outfitData.face)
    end
    if outfitData.shirt then
        description.Shirt = outfitData.shirt
    end
    if outfitData.pants then
        description.Pants = outfitData.pants
    end

    -- Body colors
    if outfitData.bodyColors then
        description.HeadColor = outfitData.bodyColors.head or description.HeadColor
        description.TorsoColor = outfitData.bodyColors.torso or description.TorsoColor
    end

    -- Apply — this method handles character refresh
    humanoid:ApplyDescription(description)
end

-- Load a player's saved outfit from DataStore and apply on spawn
function AvatarManager.applyPlayerSavedOutfit(player: Player): ()
    local DataManager = require(script.Parent.DataManager)
    local data = DataManager.getData(player)
    if data and data.outfit then
        AvatarManager.applyOutfit(player, data.outfit)
    end
end

return AvatarManager
```

### Layered Clothing Cage Setup (Blender)
```markdown
## Layered Clothing Rig Requirements

### Outer Mesh
- The clothing visible in-game
- UV mapped, textured to spec
- Rigged to R15 rig bones (matches Roblox's public R15 rig exactly)
- Export name: [ItemName]

### Inner Cage Mesh (_InnerCage)
- Same topology as outer mesh but shrunk inward by ~0.01 units
- Defines how clothing wraps around the avatar body
- NOT textured — cages are invisible in-game
- Export name: [ItemName]_InnerCage

### Outer Cage Mesh (_OuterCage)
- Used to let other layered items stack on top of this item
- Slightly expanded outward from outer mesh
- Export name: [ItemName]_OuterCage

### Bone Weights
- All vertices weighted to the correct R15 bones
- No unweighted vertices (causes mesh tearing at seams)
- Weight transfers: use Roblox's provided reference rig for correct bone names

### Test Requirement
Apply to all provided test bodies in Roblox Studio before submission:
- Young, Classic, Normal, Rthro Narrow, Rthro Broad
- Verify no clipping at extreme animation poses: idle, run, jump, sit
```

### Creator Marketplace Submission Prep
```markdown
## Item Submission Package: [Item Name]

### Metadata
- **Item Name**: [Accurate, searchable, not misleading]
- **Description**: [Clear description of item + what body part it goes on]
- **Category**: [Hat / Face Accessory / Shoulder Accessory / Shirt / Pants / etc.]
- **Price**: [In Robux — research comparable items for market positioning]
- **Limited**: [ ] Yes (requires eligibility)  [ ] No

### Asset Files
- [ ] Mesh: [filename].fbx / .obj
- [ ] Texture: [filename].png (max 1024×1024)
- [ ] Icon thumbnail: 420×420 PNG — item shown clearly on neutral background

### Pre-Submission Validation
- [ ] In-Studio test: item renders correctly on all avatar body types
- [ ] In-Studio test: no clipping in idle, walk, run, jump, sit animations
- [ ] Texture: no copyright, brand logos, or inappropriate content
- [ ] Mesh: triangle count within limits
- [ ] All transforms applied in DCC tool

### Moderation Risk Flags (pre-check)
- [ ] Any text on item? (May require text moderation review)
- [ ] Any reference to real-world brands? → REMOVE
- [ ] Any face coverings? (Moderation scrutiny is higher)
- [ ] Any weapon-shaped accessories? → Review Roblox weapon policy first
```

### Experience-Internal UGC Shop UI Flow
```lua
-- Client-side UI for in-game avatar shop
-- ReplicatedStorage/Modules/AvatarShopUI.lua
local Players = game:GetService("Players")
local MarketplaceService = game:GetService("MarketplaceService")

local AvatarShopUI = {}

-- Prompt player to purchase a UGC item by asset ID
function AvatarShopUI.promptPurchaseItem(assetId: number): ()
    local player = Players.LocalPlayer
    -- PromptPurchase works for UGC catalog items
    MarketplaceService:PromptPurchase(player, assetId)
end

-- Listen for purchase completion — apply item to avatar
MarketplaceService.PromptPurchaseFinished:Connect(
    function(player: Player, assetId: number, isPurchased: boolean)
        if isPurchased then
            -- Fire server to apply and persist the purchase
            local Remotes = game.ReplicatedStorage.Remotes
            Remotes.ItemPurchased:FireServer(assetId)
        end
    end
)

return AvatarShopUI
```

### 5. Submission
- Prepare metadata, thumbnail, and asset files
- Submit through Creator Dashboard
- Monitor moderation queue — typical review 24–72 hours
- If rejected: read the rejection reason carefully — most common: texture content, mesh spec violation, or misleading name

## 🚀 Advanced Capabilities

### Advanced Layered Clothing Rigging
- Implement multi-layer clothing stacks: design outer cage meshes that accommodate 3+ stacked layered items without clipping
- Use Roblox's provided cage deformation simulation in Blender to test stack compatibility before submission
- Author clothing with physics bones for dynamic cloth simulation on supported platforms
- Build a clothing try-on preview tool in Roblox Studio using `HumanoidDescription` to rapidly test all submitted items on a range of body types

### UGC Limited and Series Design
- Design UGC Limited item series with coordinated aesthetics: matching color palettes, complementary silhouettes, unified theme
- Build the business case for Limited items: research sell-through rates, secondary market prices, and creator royalty economics
- Implement UGC Series drops with staged reveals: teaser thumbnail first, full reveal on release date — drives anticipation and favorites
- Design for the secondary market: items with strong resale value build creator reputation and attract buyers to future drops

### Roblox IP Licensing and Collaboration
- Understand the Roblox IP licensing process for official brand collaborations: requirements, approval timeline, usage restrictions
- Design licensed item lines that respect both the IP brand guidelines and Roblox's avatar aesthetic constraints
- Build a co-marketing plan for IP-licensed drops: coordinate with Roblox's marketing team for official promotion opportunities
- Document licensed asset usage restrictions for team members: what can be modified, what must remain faithful to source IP

### Experience-Integrated Avatar Customization
- Build an in-experience avatar editor that previews `HumanoidDescription` changes before committing to purchase
- Implement avatar outfit saving using DataStore: let players save multiple outfit slots and switch between them in-experience
- Design avatar customization as a core gameplay loop: earn cosmetics through play, display them in social spaces
- Build cross-experience avatar state: use Roblox's Outfit APIs to let players carry their experience-earned cosmetics into the avatar editor
