skills/grass-builder/SKILL.md
Convert landscape grass to foliage actors using CascadeFoliage Grass Builder
npx skillsauth add sipherxyz/universal-ue-skills grass-builderInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Role: World Partition Builder Operator Scope: Level-specific grass conversion Platform: Windows (Win64)
This skill reads project paths from skills.config.json at the repository root.
project.root / project.uproject — project locationengine.path / engine.editor_cmd — engine installation
If not found, auto-detect using ue-detect-engine skill and CWD.Run USipherCascadeFoliageGrassBuilder to convert landscape grass into AInstancedFoliageActor instances for Cascade Foliage system management.
# Get engine path from registry
$EnginePath = (Get-ItemProperty "HKCU:\SOFTWARE\Epic Games\Unreal Engine\Builds" -ErrorAction SilentlyContinue).PSObject.Properties | Where-Object { $_.Value -like "*UnrealEngine*" } | Select-Object -First 1 -ExpandProperty Value
# Run from project root (CWD)
# Uses SipherWorldPartitionBuilderCommandlet (not engine's WorldPartitionBuilderCommandlet)
# to trigger Streamline D3D12 disable via SipherWorldPartitionEditorPreConfigModule
Start-Process -FilePath "$EnginePath\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" `
-ArgumentList "{project.root}\{project.uproject}","{LevelPath}","-run=SipherWorldPartitionBuilderCommandlet","-Builder=/Script/SipherCascadeFoliageEditor.SipherCascadeFoliageGrassBuilder","-nullrhi","-nosplash","-unattended" `
-Wait -NoNewWindow `
-RedirectStandardOutput "{project.root}\Saved\Logs\GrassBuilder.log" `
-RedirectStandardError "{project.root}\Saved\Logs\GrassBuilder_err.log"
Note: Must use
SipherWorldPartitionBuilderCommandletto avoid Streamline/DLSS crash. The PreConfig module (SipherWorldPartitionEditorPreConfigModule) disables Streamline D3D12 when this commandlet runs.
| Parameter | Description | Default |
|-----------|-------------|---------|
| {LevelPath} | Game path (e.g., /Game/S2/Main_Flow/Teaser/Level/L_Teaser_Temp_Autumn_03) | Required |
| -DensityScale= | Density multiplier (0.1 - 2.0) | 1.0 |
| -MinSampleSpacing= | Minimum spacing in cm | 50.0 |
HKCU:\SOFTWARE\Epic Games\Unreal Engine\Builds.\Saved\Logs\GrassBuilder.logGrass conversion complete:
Landscapes processed: 25
Grass types processed: 325
FoliageTypes created: 13
Total instances created: 1595810
Execution took 45.6 sec
The builder logs all modified actors/assets with reasons using these tags:
| Tag | Meaning |
|-----|---------|
| [REUSE] | Existing asset found and reused |
| [CREATE] | New asset created |
| [MODIFY] | Actor/asset was modified |
| [SKIP] | Item skipped (already processed) |
| [QUEUED] | Package queued for batch save |
| [SAVE] | Package saved to disk |
| [DONE] | Operation completed |
Example Log Output:
LogCascadeFoliageGrassBuilder: Display: Processing Landscape: LandscapeStreamingProxy_0
LogCascadeFoliageGrassBuilder: Display: [REUSE] FoliageType: /Game/S2/Generated/FoliageTypes/Grass/FT_LGT_Grass_Autumn_Yellow_Grass_LOD_0
LogCascadeFoliageGrassBuilder: Display: Reason: Existing asset found with matching mesh SM_Grass_Autumn_Yellow_LOD
LogCascadeFoliageGrassBuilder: Display: [CREATE] FoliageType: /Game/S2/Generated/FoliageTypes/Grass/FT_LGT_Rocks_SM_Small_Rocks_01_0
LogCascadeFoliageGrassBuilder: Display: Reason: No existing FoliageType found for mesh SM_Small_Rocks_01
LogCascadeFoliageGrassBuilder: Display: [MODIFY] IFA Actor: InstancedFoliageActor_0
LogCascadeFoliageGrassBuilder: Display: Reason: Added 15420 grass instances for FoliageType FT_LGT_Grass_Autumn_Yellow_Grass_LOD_0
LogCascadeFoliageGrassBuilder: Display: [MODIFY] Landscape Actor: LandscapeStreamingProxy_0
LogCascadeFoliageGrassBuilder: Display: Reason: Added tag 'CascadeGrassConverted' to prevent re-conversion
LogCascadeFoliageGrassBuilder: Display: [QUEUED] Package: /Game/S2/Generated/FoliageTypes/Grass/FT_LGT_Rocks_SM_Small_Rocks_01_0
LogCascadeFoliageGrassBuilder: Display: Reason: New FoliageType asset needs to be saved
LogCascadeFoliageGrassBuilder: Display: [SKIP] Landscape: LandscapeStreamingProxy_5
LogCascadeFoliageGrassBuilder: Display: Reason: Already has 'CascadeGrassConverted' tag
LogCascadeFoliageGrassBuilder: Display: [SAVE] Saving 15 packages to disk...
LogCascadeFoliageGrassBuilder: Display: [DONE] All packages saved successfully
ALandscapeProxy actors in levelULandscapeGrassType from landscape materialsUFoliageType_InstancedStaticMesh for each grass varietyAInstancedFoliageActorSaved to /Game/S2/Generated/FoliageTypes/Grass/:
FT_LGT_Grass_Autumn_Yellow_Grass_LOD_0FT_LGT_Rocks_SM_Small_Rocks_01_0/grass-builder /Game/S2/Main_Flow/Teaser/Level/L_Teaser_Temp_Autumn_03
| Error | Solution |
|-------|----------|
| Missing world name | Use /Game/... format without .umap |
| Builder class not found | Rebuild with SipherCascadeFoliageEditor |
| No landscapes found | Check level contents |
| Streamline/DLSS crash | Use SipherWorldPartitionBuilderCommandlet (not engine's WorldPartitionBuilderCommandlet) |
Saved/Logs/GrassBuilder.logSaved/Logs/GrassBuilder_err.logskill: grass-builder
invoke: /system-architect:grass-builder
type: development
category: world-partition-builder
scope: project-root
development
This skill should be used when implementing features in isolation using git worktrees. Triggers on "create worktree", "isolated workspace", "parallel development", or when starting implementation that should not affect main workspace.
testing
Manage VFX team issues on GitHub Projects - timeline scheduling, status updates, member commit checks, bulk assign. Use when managing VFX team project board, adding issues to timeline, checking member progress, or bulk-updating issue fields.
tools
Generate C++ validation rules from JSON definitions. Use when team updates ValidationRules.json or asks to add/modify validation rules.
development
Check codebase for Microsoft Xbox XR (Xbox Requirements) compliance issues. Scans for account picker, cloud saves, achievements, Quick Resume, and Xbox certification requirements. Use before console submission or when preparing for Microsoft certification. Triggers on "XR", "Xbox certification", "Microsoft compliance", "Xbox cert", "Xbox requirements", "GDK compliance".