Export Pipeline
arjun988/blender-skills
Production export from Blender to FBX, GLTF, OBJ, USD, and Alembic with scale, pivot, rotation, normals, materials, animation, and collision verification via MCP.
A skill your agent uses when grooming hair or fur in Maya with XGen (Interactive Groom splines or legacy descriptions): scalp hair, eyebrows, eyelashes, fur, guides, clumps, noise, parting, density…
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scenario-labs/skills scenario-maya-groom --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .claude/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .claude/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groomType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scenario-labs/skills scenario-maya-groom --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .agents/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .agents/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scenario-labs/skills scenario-maya-groom --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .cursor/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .cursor/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/scenario-labs/skills.git --path skills/dcc/maya/scenario-maya-groom--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scenario-labs/skills scenario-maya-groom --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .gemini/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .gemini/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install scenario-labs/skills scenario-maya-groomInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .github/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .github/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add scenario-labs/skills --skill scenario-maya-groom -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install scenario-labs/skills scenario-maya-groom --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/scenario-labs/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/dcc/maya/scenario-maya-groom .opencode/skills/scenario-maya-groom && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "scenario-maya-groom" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/maya/scenario-maya-groom into .opencode/skills/scenario-maya-groom/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-maya-groom", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
scenario-maya-groomA skill your agent uses when grooming hair or fur in Maya with XGen (Interactive Groom splines or legacy descriptions): scalp hair, eyebrows, eyelashes, fur, guides, clumps, noise, parting, density…
Scenario Maya Groom is an agent skill from scenario-labs/skills. Use when grooming hair or fur in Maya with XGen (Interactive Groom splines or legacy descriptions): scalp hair, eyebrows, eyelashes, fur, guides, clumps, noise, parting, density maps, a fill layer, aiStandardHair shading, noisy or flickering hair renders, hair that must move (Linear Wire, nHair, Alembic caches), or a groom for Unreal (groom Alembic, cards). Also when XGen hair looks CG, clumps look uniform, the scalp shows through, or an XGen script fails.
Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 8 other files, including scripts and reference files (for example `references/critique.md`, `references/expert-notes.md` and `references/gui-paths.md`).
It sits in Game Development, covering Database migrations and Game development. The repository describes itself as: Get production-ready images, video, audio, and 3D from any AI agent: skills that pick the right model, price before spending, and keep characters and brands consistent through… The licence is MIT.
10 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit f6f8ab7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
npxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Scenario Maya Groom loads about 5k tokens when it runs, and up to ~37k if it reads all its reference files. Until then it costs about 120 tokens; SKILL.md has 2,087 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from scenario-labs/skills at commit f6f8ab7, republished under its MIT licence (© scenario-labs). 2,087 words, ~4,994 tokens.
.claude/skills/scenario-maya-groom/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Expert grooming sets the flow on a few guides first, then a clump hierarchy with loose roots and varied profiles, then breakup only where the reference shows it (tips, strays), judged in close, side-lit renders with the real hair shader. Interactive Groom brushes have no stroke API, so the agent grooms with data (guides from a flow sheet wired into the stack, masks written as images, modifiers set by value) and judges with numbers from exported strands plus renders. Code: scripts/mx_groom.py (import mx_groom as G). If a sibling skill named here is missing from your available skills, ask the user to install it (npx skills add scenario-labs/skills --skill <name>); unattended, proceed from tool schemas and flag the gap.
REQUIRED BACKGROUND: scenario-maya-expert (execution channel, review loop, 2027 version traps).
Status (2026-09-24): every Maya call here is not yet run in Maya (2027 not installed). The pure layer of mx_groom passes offline (tests/code/maya-groom/test_mx_groom_offline.py). Names not quoted from the 2027 help resolve at run time from G.NAME_CANDIDATES.
G.CLUMP_PROFILES: spike, onion).G.clump_follow).Write the answers to brief.json before any node.
| Input | Changes | Default when silent |
|---|---|---|
| Target | Arnold strands, Unreal strands, or cards (MtoA renders no XGen Card primitives) | Arnold strands |
| Hair types | one description each: body, fill, fringe, strays, brows, upper and lower lashes, transition, fuzz. Close-up face: rule peach fuzz in or out (Hadi) | body + brows |
| Style | realistic: random clump points, Randomness > 0, melanin. Stylized: clumps on the guides (FlippedNormals), flat Base Color with Melanin 0 [added]. Both: a point on the defined-to-soft range, same silhouette (Fernandez 07) | realistic |
| Motion, and who owns it | static follow; keyed or simulated wires; rig or CFX department (Flood) or the groom file (2027 help) | follows the scalp |
| Still or animated | still likeness: grow on the head (Hadi). Animated or real time: scalp cap with clean UVs | scalp cap |
| Camera distance | Scattering Mode: Accurate for close-ups (10 to 30 % slower), Adaptive for mixed shots | Adaptive |
| Budget | spline count and GPU memory (xgmSplineQuery), Unreal sim guides | state a number |
| Reference | flow arrows and clump counts come from it | ask; else write the assumed look down |
| New or inherited | Interactive Groom for new work; legacy XGen only for an inherited asset or non-spline primitives | Interactive Groom |
Headless mayapy (mx_run --plugins mtoa,xgen,abc, in that order) covers guides, masks, Alembic, Unreal tags, lint, analysis and Arnold reviews; the GUI bridge covers the menu queries and whatever the probe shows does not evaluate headless (IG computes on the GPU). references/procedures.md P16 is the whole job as one script with every gate asserted (G.gate raises).
G.probe() headless and in the GUI. Menu actions with no documented command are read, not clicked: through the bridge, G.menu_recipe(name) queries the item's command string (cmds.menuItem(item, q=True, command=True)) and stores it; Attribute Editor buttons (Make Wires Dynamic, Reference State Update, Rebuild) go through G.button_recipe(name, node). Export Cache opens a dialog: write its @path@ template from G.recipe_source. GATE: probe JSON saved; recipe_status() shows the recipes the plan needs as recorded.G.scalp_check(scalp, for_unreal=...). GATE: no error: line, border edges present (the hairline), UVs unique.base, whorl, part, direction, length regions) and count big clumps and small per big. GATE: G.check_flow_sheet(flow) == [].g = G.make_guides(scalp, flow, spacing=..., cvs=8, collide=head), few first (FlippedNormals); symmetric=True only on symmetric topology (Hadi). GATE: G.gate(G.measure_curves(...)["verdict"]), penetration 0, discontinuities only at parts and whorls.G.create_description(scalp, "hair_body") per hair type (recipe, renamed). G.wire_guides(desc, g["curves"]): a Guide modifier low in the stack interpolates the guides, fed by a Curve to Spline on its inGuide; it holds the region maps parts need. A Curve to Spline on the description itself turns each curve into one hair and disables everything below it: only for exact strands or caches. GATE: G.wiring_verdict: flow-sheet error of the hair drops after wiring, and the InGuide_base cache holds every guide.G.build_clumps), strand Noise on a share, length breakup, Collision. G.write_hairline_mask for the hairline (band=True: transition), one map shared across descriptions (G.connect_texture), G.patches holes in the primary's mask for stray clumps. GATE: G.gate(G.lint()["lines"]); the coverage pass (showthrough %) and spline count within budget.G.hierarchy_from_states (3 to 5), G.breakup_report and G.measure_abc. Render Clump before and after Noise once each (2027 help). GATE: breakup_verdict and strand_verdict clean; a side-lit close-up passes references/critique.md, triangles and squares in the reference's proportion.G.hair_shader(desc, preset=...) (replaces the default hairPhysicalShader), G.curve_render(desc, "ribbon", min_pixel_width=...), G.cost_sweep over the four knobs with flicker. Save before rendering XGen. GATE: G.review(...) sheet judged with the critique, no shader warn:.| Value | Relative to | Source |
|---|---|---|
| no clump pull over the first ~14 % | strand length, clump profile | Fernandez 02 [00:17:56] |
| spike: 0.01 at mid length; onion: mid bulge ~0.9 | legacy Clump Scale ramp (radius reading) | Fernandez 02 [00:05:38], frames 00:06:00, 00:10:51 |
| 3 to 5 small clumps per big; 2 levels, 3 for long hair | clump hierarchy | Fernandez 03 [00:01:31], [00:09:11] |
| second clump density 7.5, clump noise 2, Cut random up to 10 | his real-time scalp asset | Giovannini [00:09:43] to [00:11:25] |
| strays 5 % (up to 20 %), noise 3 on strays, 0 on body | share of hairs | Giovannini [00:09:28], [00:11:59] |
| noise mask 0.1 to 0.5 (1 kills clumping) | legacy Noise modifier | FlippedNormals [00:32:05] |
| 20 CVs with noise; 24 to 36 for curls | modifier or base CV count | FlippedNormals [00:28:52]; 2027 help |
| random length 0.8 to 1.2; clump cut 0.2 | balanced around 1; small-clump level | Fernandez 08 [00:09:33], [00:15:34] |
| melanin 0.2 blonde, 0.5 red or brown, 1.0 black | Standard Hair | Arnold hair doc |
| IOR 1.55 (outside 1.4 to 1.6 only wet); Shift 0 to 10 deg, 2.3 to 3.7 measured, 0 synthetic | Standard Hair | Arnold hair doc |
| Unreal: Sub Steps 40, Iterations 10, Collision Radius 3.5, Bend Scale tip 0.1 | UE 5.3 era [estimate] | Giovannini [00:51:04] to [00:54:27] |
| Nucleus Space Scale 0.01 | cm scenes | maya-version-deltas 2.8 |
In code. G.lint() (plug-in order, stack, clump wiring and profiles, noise placement, budget, shader), G.measure_abc(cache)["verdict"] (root pinch, profile variety, small per big, strays, tip noise, frequency and fray, length balance, flow, penetration), G.wiring_verdict, G.breakup_verdict, G.unreal_verdict(G.inspect_abc(abc)). G.gate turns any of them into an assertion. Thresholds marked [added] are this skill's defaults; each line cites its rule.
Visual. G.review(hair, out, head=head, scalp=scalp, closeups=[...]) renders the real shader: beauty (dome plus a key along the groom, Schneider), backlit (strays, halo), silhouette, coverage. Viewport captures only after G.viewport_aa(True) (FlippedNormals, Fernandez). Judge with references/critique.md: flow, then clumps, then strands (Fernandez).
| Mistake | Looks like | Fix |
|---|---|---|
| Guides not wired, or through Curve to Spline on the description | hair ignores the flow sheet, or one hair per curve | G.wire_guides (Guide modifier), then wiring_verdict |
| Clumped roots | bald lines between clumps at the scalp | root-loose Clump Scale ramp (Fernandez) |
| One clump shape everywhere, all triangles | "CG" regularity | Radius Variance, profiles, square clumps (Fernandez 02, 05) |
| Mask and tightness judged on straight guides | two knobs seem to do the same | noise below the Clump, G.clump_follow (Fernandez 06) |
| Strand noise to break big clumps; noise on the body | small clumps dissolve into frizz | clump-level noise, strand noise on a share (Fernandez 07, Giovannini) |
| One noise frequency, fray everywhere | fake, uniform frizz | vary frequency; fray on few hairs (Fernandez 05) |
| Strays as a new system only | strays unrelated to the clumps | holes in the primary's mask (Fernandez 03) |
| Extending strands | criss-crossing inside clumps | scale or cut at the small-clump level (Fernandez 08) |
| Jagged clumps, bad placement | stepped clump edges | raise Map Subdivision Level on every level; new Seed (2027 help) |
| Secondary density at or below primary | secondary clumps leak across cells | duplicate the primary, raise density, Use Control Map (2027 help) |
| Clumps crossing a part | clumps straddle the part | Guide region map as clump control map, or separate descriptions |
| Cache without Multiple Transforms and Write Final Width | curves wrong in other apps | turn both on (2027 help, Flood); check Epic's opposite advice |
Default hairPhysicalShader kept | no indirect diffuse on the hair (Ai Kd Ind defaults to 0) | aiStandardHair, or raise Ai Kd Ind (2027 help) |
| Judging an aliased viewport | density and clumps misread | G.viewport_aa(True) first |
map1 for Unreal, frozen, no history; it passes G.scalp_check.-uvWrite, -stripNamespaces), and the wires cache when the rig owns the wires.<asset>_ue5.abc with groom_group_id, groom_guide (real guides, no fill) and groom_root_uv (UV set map1), a clean unreal_verdict on the reimport, and the Unreal start values (Numbers).hairPhysicalShader (Ai Kd Ind 0). Standard Hair gained scattering_mode in MtoA 5.6.0. Load MtoA before XGen.mx_groom ports. No Arnold GPU on macOS; Arnold RenderView replaces Maya IPR. Ctrl means Control, not Command.references/procedures.md: code for every stage, P5b clump tests, P16 the whole job. Load before writing groom code.references/critique.md: the rubric for judging a groom from renders and numbers. Load at every gate.references/expert-notes.md: principles by expert, disagreements with deciding conditions. Load when choosing between options.references/gui-paths.md: menus, editors, brushes, hotkeys (computer-use agent).references/sources.md: every source, credentials, URLs, best timestamps.© scenario-labs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 6 other files (scripts, references) in skills/dcc/maya/scenario-maya-groom of scenario-labs/skills.
Open the folder on GitHubat commit f6f8ab7
Scenario Maya Groom next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Scenario Maya Groom this skillscenario-labs/skills | 946 | — | ~5k | Automated safety check: Pass | MIT | |
| Export Pipelinearjun988/blender-skills | 283 | — | ~1k | Automated safety check: Pass | MIT | |
| Godot 3D Materialsthedivergentai/GD-Agentic-Skills | 821 | — | ~5.5k | Automated safety check: Pass | LGPL-3.0 | |
| Godot Gdscript Patterns925236118/AlphaAgent | 103 | 10 repos | ~5k | Automated safety check: Pass | MIT | |
| Sprite Genaldegad/sprite-gen | 2.7k | — | ~4.9k | Automated safety check: Pass | Apache-2.0 | |
| 2D Map and Scene Generator0x0funky/agent-sprite-forge | 4.4k | — | ~2.9k | Automated safety check: Pass | MIT |
arjun988/blender-skills
Production export from Blender to FBX, GLTF, OBJ, USD, and Alembic with scale, pivot, rotation, normals, materials, animation, and collision verification via MCP.
thedivergentai/GD-Agentic-Skills
Expert patterns for Godot 3D PBR materials using StandardMaterial3D including albedo, metallic/roughness workflows, normal maps, ORM texture packing, transparency modes, and shader conversion.
925236118/AlphaAgent
Master Godot 4 GDScript patterns including signals, scenes, state machines, and optimization.
aldegad/sprite-gen
Generates images and game sprites through GPT or Grok with guided provider choices, separate saved defaults, automatic cleanup and optional curation.
0x0funky/agent-sprite-forge
Plans and builds 2D game maps and scenes, from tilemaps and parallax backgrounds to HD-2D plates, with collision checks, a playable HTML preview and Tiled, Godot or LDtk export.
qq362946/Fantasy
Development and review guide for the Fantasy C# distributed game server framework: ECS, FTask, routing, service discovery, config and databases.
scenario-labs/skills
A skill your agent uses when drawing or animating with Grease Pencil in Blender 5.x from Python: 2D or 2.5D illustration, frame-by-frame animation, a cutout or part-based 2D character, strokes with…
scenario-labs/skills
A skill your agent uses when grooming hair or fur in Blender with hair curves, such as a character hairstyle, animal fur, procedural fur in geometry nodes, or hair cards and mesh hair for games.
scenario-labs/skills
A skill your agent uses when lighting, rendering or compositing in Blender: light a character, product or hero shot, interior at dusk or night, three-point or motivated lighting, sun and sky, HDRI…
scenario-labs/skills
A skill your agent uses when creating a ChatGPT pet or Codex pet with Scenario: hatching an animated companion from a text idea, a character, mascot or brand cue, or reference photos and art; making…
scenario-labs/skills
A skill your agent uses when animating characters or scenes in Godot 4.7: AnimationPlayer clips and RESET, AnimationTree state machines and blend spaces built in code, Mixamo or glTF import, loop…
scenario-labs/skills
A skill your agent uses when adding or fixing sound in Godot 4.7: audio buses and effects, volume sliders, 'too many sounds', combat audio with hundreds of enemies, sounds clipping or distorting, 3D…
Categories
A skill your agent uses when grooming hair or fur in Maya with XGen (Interactive Groom splines or legacy descriptions): scalp hair, eyebrows, eyelashes, fur, guides, clumps, noise, parting, density…. Scenario Maya Groom is an agent skill from scenario-labs/skills. Use when grooming hair or fur in Maya with XGen (Interactive Groom splines or legacy descriptions): scalp hair, eyebrows, eyelashes, fur, guides, clumps, noise, parting, density maps, a fill layer, aiStandardHair shading, noisy or flickering hair renders, hair that must move (Linear Wire, nHair, Alembic caches), or a groom for Unreal (groom Alembic, cards).
Scenario Maya Groom fits situations like: fur in Maya with XGen (Interactive Groom splines; legacy descriptions): scalp hair; aiStandardHair shading; flickering hair renders.
Run `npx skills add scenario-labs/skills --skill scenario-maya-groom -a claude-code`. Or copy the skill folder (skills/dcc/maya/scenario-maya-groom in scenario-labs/skills) into .claude/skills/scenario-maya-groom in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scenario-labs/skills --skill scenario-maya-groom -a codex`. Or copy the skill folder (skills/dcc/maya/scenario-maya-groom in scenario-labs/skills) into .agents/skills/scenario-maya-groom in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add scenario-labs/skills --skill scenario-maya-groom -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scenario-maya-groom, .gemini/skills/scenario-maya-groom, .github/skills/scenario-maya-groom and .opencode/skills/scenario-maya-groom in your project.
Going by SKILL.md and its folder, Scenario Maya Groom needs Python for the scripts in its folder and the command-line tools its instructions call (npx). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Scenario Maya Groom is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 5k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 32k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scenario Maya Groom: Export Pipeline (arjun988/blender-skills, 283 stars), Godot 3D Materials (thedivergentai/GD-Agentic-Skills, 821 stars), Godot Gdscript Patterns (925236118/AlphaAgent, 103 stars) and Sprite Gen (aldegad/sprite-gen, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
scenario-labs (a GitHub organization) maintains it in scenario-labs/skills, which has 946 GitHub stars. The repository holds 146 skills in this directory. The repository was last updated on October 10, 2026.
Source: scenario-labs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.