Extraction Timing
ThibautBaissac/rails_ai_agents
Guides decisions about when and how to extract code into services, queries, concerns, form objects, or other patterns.
Generate heightmaps, map reference images, and water feature splines (rivers, lakes, oceans) from real-world geographic data (terraindata tool).
$ npx skills add kevinpbuckley/VibeUE --skill terrain-data -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kevinpbuckley/VibeUE terrain-data --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/kevinpbuckley/VibeUE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Content/Skills/terrain-data .claude/skills/terrain-data && 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 "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .claude/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-dataType 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 kevinpbuckley/VibeUE --skill terrain-data -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kevinpbuckley/VibeUE terrain-data --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Content/Skills/terrain-data .agents/skills/terrain-data && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .agents/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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 kevinpbuckley/VibeUE --skill terrain-data -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kevinpbuckley/VibeUE terrain-data --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Content/Skills/terrain-data .cursor/skills/terrain-data && 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 "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .cursor/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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/kevinpbuckley/VibeUE.git --path Content/Skills/terrain-data--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 kevinpbuckley/VibeUE --skill terrain-data -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kevinpbuckley/VibeUE terrain-data --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Content/Skills/terrain-data .gemini/skills/terrain-data && 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 "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .gemini/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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 kevinpbuckley/VibeUE terrain-dataInstalls 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 kevinpbuckley/VibeUE --skill terrain-data -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .github/skills && cp -r skills-src/Content/Skills/terrain-data .github/skills/terrain-data && 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 "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .github/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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 kevinpbuckley/VibeUE --skill terrain-data -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kevinpbuckley/VibeUE terrain-data --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Content/Skills/terrain-data .opencode/skills/terrain-data && 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 "terrain-data" agent skill from https://github.com/kevinpbuckley/VibeUE/tree/master/Content/Skills/terrain-data into .opencode/skills/terrain-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "terrain-data", 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.
terrain-dataGenerate heightmaps, map reference images, and water feature splines (rivers, lakes, oceans) from real-world geographic data (terraindata tool).
Terrain Data is an agent skill from kevinpbuckley/VibeUE. Generate heightmaps, map reference images, and water feature splines (rivers, lakes, oceans) from real-world geographic data (terraindata tool). Use when the user asks to build terrain from a real location/coordinates, download a real-world heightmap, or add rivers/lakes/oceans from map data. Downloads Mapbox tiles server-side and produces UE5-compatible heightmaps + landscape splines.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development, covering Backend development. It works with Unreal Engine and Mapbox. The repository describes itself as: Unreal Engine Vibe Coding tool. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit dc051be. 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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json and python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
Terrain Data loads about 3.8k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 1,457 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); files beside SKILL.md are not scanned.
The full file from kevinpbuckley/VibeUE at commit dc051be, republished under its MIT licence (© kevinpbuckley). 1,457 words, ~3,761 tokens.
.claude/skills/terrain-data/SKILL.md (or your agent's skills folder).🧠 Brains complement: IF an
unreal-engine-skills-managertool (external MCP) exists in this session, call it with{action: "load", skill: "landscape-and-foliage"}for UE domain knowledge on this topic — correct APIs, architecture, best practices — and treat it as the rubric for any review / "best practices" question. If no such tool is available (e.g. running under Claude Code or Codex without that MCP), skip this line entirely and proceed with this skill alone — do NOT attempt the call.
Generates heightmaps and water feature splines from real geographic coordinates via the terrain_data
MCP tool. The tool downloads Mapbox tiles server-side and writes UE5-compatible heightmaps + landscape
splines into the project's Saved/Terrain/ folder — no API key or chat configuration is required.
preview_elevation — fetch elevation stats + suggested settings. Returns suggestedZScale, suggestedXYScales (resolution → XY scale), height range.generate_heightmap — generate the 16-bit PNG using suggested settingsget_map_image — satellite/topo reference image for the same areaattach_image — attach the satellite image so you can see the terrain colors and features for material/painting decisionslandscape skill⚠️ CRITICAL — Landscape Scale: When creating the landscape, use suggestedXYScales[resolution] from step 1 as the X and Y scale. Do NOT use the default value of 100. Use suggestedZScale for the Z scale. Example: scale=unreal.Vector(suggestedXYScales["1009"], suggestedXYScales["1009"], suggestedZScale)
get_water_features — fetch rivers, lakes, and oceans for the same lng/lat/map_size. Saves full JSON to Saved/Terrain/ and returns a compact summary with the file path.json_str = open(file_path).read()ue5_rings, waterways use ue5_points. Both are origin-centered.Create a landscape from the terrain around Mount FujiGenerate a heightmap for San Francisco at coordinates -122.4194, 37.7749Build a real-world landscape from the Swiss Alps near Zermatt (lng=7.7480, lat=46.0207)Get the terrain around the Grand Canyon and make a landscapeGenerate heightmap for Tokyo at 139.6917, 35.6895 with a satellite reference imageterrain_data(action="preview_elevation", lng=138.7274, lat=35.3606)Response:
{
"min_height": 340.0,
"max_height": 3776.0,
"height_range": 3436.0,
"suggested_base_level": 340,
"suggested_height_scale": 27,
"suggestedZScale": 741,
"suggestedXYScales": { "505": 3429, "1009": 1714, "2017": 857, "4033": 429, "8129": 213 },
"tile_zoom": 13,
"tile_count": 9
}Use suggestedXYScales["1009"] (or whichever resolution you chose) as the X and Y scale when calling create_landscape. Use suggestedZScale for the Z scale.
terrain_data(
action="generate_heightmap",
lng=138.7274, lat=35.3606,
base_level=340,
height_scale=27,
format="png"
)Response:
{
"success": true,
"file": "C:/Project/Saved/Terrain/heightmap_35.3606_138.7274.png",
"min_height_m": 340.0,
"max_height_m": 3776.0,
"dimensions": "1081x1081"
}terrain_data(
action="get_map_image",
lng=138.7274, lat=35.3606,
style="satellite-v9"
)Response:
{
"success": true,
"file": "E:/Project/Saved/Terrain/map_satellite_v9_35.3606_138.7274.png",
"style": "satellite-v9",
"size_bytes": 1981147
}⚠️ CRITICAL: After downloading a satellite image, ALWAYS attach it so you can see the terrain colors and features. This lets you make informed decisions about material layers and painting.
attach_image(file_path="E:/Project/Saved/Terrain/map_satellite_v9_35.3606_138.7274.png")attach_image is a tool call (like terrain_data), NOT a Python function. Do NOT put it inside execute_python_code. Call it directly as a tool. If no attach_image tool is available in your session, skip this step and proceed using the saved file path returned by get_map_image.
After attaching, you will see the satellite image in your next response. Use it to:
Use the landscape skill to import the heightmap file:
QuadsPerSection=63, SectionsPerComponent=2, ComponentCount=8x8 → 1009×1009 resolutionsuggestedXYScales["1009"] from preview (e.g. 1714 for a 17.28km map). Do NOT use the default 100 — that makes the landscape ~17x too small!suggestedZScale from preview (e.g. 741 for Mount Fuji).png path returned in step 2Example:
result = unreal.LandscapeService.create_landscape(
location=unreal.Vector(0, 0, 0),
rotation=unreal.Rotator(0, 0, 0),
scale=unreal.Vector(1714, 1714, 741), # XY from suggestedXYScales["1009"], Z from suggestedZScale
sections_per_component=2,
quads_per_section=63,
component_count_x=8,
component_count_y=8,
landscape_label="MyLandscape"
)| Parameter | Default | Notes |
|---|---|---|
lng / lat | required | Decimal degrees. Positive = East/North |
format | png | png = 16-bit grayscale, raw = binary, zip = PNG + info |
map_size | 17.28 | km — Cities: Skylines standard |
base_level | 0 | Use suggested_base_level from preview |
height_scale | 100 | Use suggested_height_scale from preview |
water_depth | 40 | Cities: Skylines water units |
gravity_center | 0 | 0=off, 2=N, 4=E, 6=S, 8=W (tilts terrain for water flow) |
level_correction | 0 | 0=none, 2=flatten coastlines, 3=aggressive |
blur_passes | 10 | Adjust per terrain character! 5–10=rugged, 15–25=hills, 25–40=smooth/flat. See Terrain Character Guide |
plains_height | 140 | Meters — threshold between plains and mountains |
save_path | auto | Saves to <ProjectDir>/Saved/Terrain/ by default |
| Style | Description |
|---|---|
satellite-v9 | Aerial imagery (best for landscape texturing) |
outdoors-v11 | Topo with trails and contours |
streets-v11 | Street map |
light-v10 / dark-v10 | Minimal |
resolution=N⚠️ Never use the default 1081×1081 for UE landscapes — it requires 36×36 components and will timeout. Always pass resolution= matching your landscape config.
| resolution= | Components | Quads | Sections | km at UE scale=100 |
|---|---|---|---|---|
| 505 | 8×8 | 63 | 1 | ~0.5 km |
| 1009 | 8×8 | 63 | 2 | ~1.0 km |
| 1009 | 16×16 | 63 | 1 | ~1.0 km |
| 2017 | 16×16 | 63 | 2 | ~2.0 km |
| 4033 | 32×32 | 63 | 2 | ~4.0 km |
| 8129 | 32×32 | 127 | 2 | ~8.1 km |
"km at scale=100" is the UE world size when landscape XY scale = 100 cm/quad (default). Adjust scale to match real geography (see below).
terrain_data's map_size (default: 17.28 km) controls the geographic area captured. To make the UE landscape match actual geography:
UE XY Scale (cm/quad) = (map_size_km × 100,000) / (resolution − 1)Example: map_size=20, resolution=2017 → (20 × 100,000) / 2016 ≈ 992 cm/quad (~9.9 m/quad)
Set this as the landscape's X and Y scale when creating it.
20000 / height_scale cm — e.g., height_scale=27 → Z scale ≈ 741⚠️ ALWAYS calculate Z Scale from height_scale. Do NOT guess. Use this formula when creating the landscape:
z_scale = 20000 / height_scaleDerivation: pixel encoding is pixel = elevation_m × heightScale × 64 / 100 and UE interprets height_cm = pixel × z_scale / 128. Setting height_cm = elevation_m × 100 (meters→cm) gives z_scale = 20000 / heightScale.
| height_scale | Z Scale | Terrain Type Example |
|---|---|---|
| 27 | 741 | Tall mountains (Mt. Fuji, Alps) |
| 50 | 400 | Moderate mountains (Appalachians) |
| 100 | 200 | Hills, canyons (Grand Canyon) |
| 150 | 133 | Low hills, mesas |
| 200 | 100 | Gentle rolling terrain |
| 250 | 80 | Very flat terrain, gentle domes |
For Cities: Skylines, export as PNG and import via the standard heightmap importer (1081 default is fine there).
⚠️ CRITICAL: The suggested_height_scale from preview_elevation maximizes detail, but also amplifies noise. You MUST adjust blur_passes based on the terrain character.
After preview_elevation, look at the height_range and think about what the terrain actually looks like:
| height_range | suggested_height_scale | Terrain Character | blur_passes |
|---|---|---|---|
| > 2000m | Low (< 50) | Rugged mountains — keep default blur | 5–10 |
| 500–2000m | Moderate (50–100) | Mixed terrain — moderate smoothing | 10–15 |
| 100–500m | High (100–200) | Hills/mesas — needs more smoothing | 15–25 |
| < 100m | Very high (200–250) | Flat/gentle — needs heavy smoothing | 25–40 |
Smooth terrain (granite domes, rolling hills, plains, gentle slopes):
blur_passes (20–40) to remove data noiseheight_scale amplifies every pixel of noise — smoothing counteracts thisRugged terrain (jagged peaks, canyons, volcanic craters):
blur_passes (5–10) to preserve detailheight_scale means less noise amplification, so less smoothing neededIf you get a terrain that looks jagged/spiky when the real place is smooth:
height_scale was too high without enough blur_passesblur_passes=30 or higher20000 / height_scale, NOT an arbitrary value like 200Fetches waterways and water bodies for a map area using the same Mapbox Vector Tile source as the heightmap. Use the exact same lng, lat, and map_size as your heightmap call.
terrain_data(action="get_water_features", lng=-105.0, lat=39.7, map_size=17.28)Response includes:
file — path to the saved JSON file (e.g. Saved/Terrain/water_features_42.9720_-71.3480_10km.json)num_waterways / num_water_bodies — countswaterway_class_breakdown — object with class counts, e.g. {"stream": 191, "river": 26, "ditch": 12}waterways[] — summary of each waterway: name, class, estimated_width_m, num_pointswater_bodies[] — summary of each water body: name, class, num_ring_pointsmessage — instructions on how to use the saved file, coordinate system infoue5_coordinate_note — critical info about coordinate offset for water planesThe saved JSON file contains the full data with:
waterways[] — rivers, streams, canals. Each has name, class, estimated_width_m, points (lng/lat array), ue5_points (array of {x, y, z} objects in UE5 coords)water_bodies[] — lakes, ponds, oceans. Each has name, class, rings (lng/lat array of arrays), ue5_rings (array of arrays of {x, y, z} objects in UE5 coords)⚠️ CRITICAL FIELD NAMES:
ue5_points (NOT points — those are lng/lat)ue5_rings (NOT polygon or ring)class (NOT waterway_class or type)ue5_points and ue5_rings are landscape-center-relative (origin-centered):
| Issue | Fix |
|---|---|
429 rate limit | The Mapbox tile source is rate-limited — wait and retry, or reduce request frequency |
| Flat heightmap | height_range < 50m — use height_scale: 250 for detail |
| Clipped mountains | Lower height_scale or increase base_level |
| Jagged/spiky terrain | Increase blur_passes (20–40 for smooth terrain) and check Z scale formula |
| Terrain doesn't match real place | Check terrain character guide — smooth places need high blur_passes |
| Timeout | Large map sizes at high zoom may hit Vercel's 10s limit — try smaller map_size |
| No waterways returned | Area may have no mapped water features (desert, urban grid) — check satellite image |
| Landscape too small | You used XY scale=100 (default) instead of the correct value from suggestedXYScales. Recreate with the correct scale |
| Black screenshots after camera move | Camera inside terrain. Use ActorService.get_actor_view_camera() to frame from TOP view instead of guessing Z height |
| Water features timeout | PBF tile fetch uses 45s timeout — large map_size at high zoom may still be slow |
| Field name errors | Use ue5_points (not points), ue5_rings (not polygon), class (not waterway_class) |
© kevinpbuckley, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in Content/Skills/terrain-data of kevinpbuckley/VibeUE.
Open the folder on GitHubat commit dc051be
Terrain Data 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 |
|---|---|---|---|---|---|---|
| Terrain Data this skillkevinpbuckley/VibeUE | 726 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Extraction TimingThibautBaissac/rails_ai_agents | 665 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Ue Specifiersfjz13/UnrealSpecifiers | 1.1k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Antv L7antvis/L7 | 4.1k | — | ~4.4k | Automated safety check: Pass | MIT | |
| Unreal BridgeTornLux/UnrealBridge | 305 | — | ~8.4k | Automated safety check: Notes | MIT | |
| Unreal Blueprint Authoringflopperam/unreal-engine-mcp | 1.1k | — | ~1.6k | Automated safety check: Pass | None |
ThibautBaissac/rails_ai_agents
Guides decisions about when and how to extract code into services, queries, concerns, form objects, or other patterns.
fjz13/UnrealSpecifiers
A skill your agent uses when writing, editing, reviewing, validating, or explaining Unreal Engine C++ reflected declarations: UCLASS, USTRUCT, UENUM, UINTERFACE, UPROPERTY, UFUNCTION, UPARAM, UMETA…
antvis/L7
基于 WebGL 的大规模地理空间数据可视化引擎。适用于: (1) 创建交互式 WebGL 地图应用 (2) 可视化地理空间数据(点、线、面、热力图) (3) 构建位置数据驾驶舱 (4) 添加地图图层、交互和动画效果 (5) 处理并展示 GeoJSON、CSV 等空间数据
TornLux/UnrealBridge
Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.
flopperam/unreal-engine-mcp
Walks an agent through creating and editing Unreal Engine Blueprints with the Flopperam MCP's bp_* tools, from inspection to commit and verification.
flopperam/unreal-engine-mcp
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
kevinpbuckley/VibeUE
Previews, validates and bakes bone-rotation edits on Unreal Engine AnimSequences, enforcing a coordinate space and a constraint-checked preview-validate-bake loop.
kevinpbuckley/VibeUE
Creates and edits Unreal Engine Animation Montages through AnimMontageService: sections, slots, segments, branching points, notifies and blend settings.
kevinpbuckley/VibeUE
Creates and edits AnimSequence keyframes and bone tracks in Unreal Engine through AnimSequenceService, following an inspect, preview, validate and bake workflow with correct bone-space handling.
kevinpbuckley/VibeUE
Imports files into Unreal Engine, exports textures, reads the Content Browser selection and checks open assets via VibeUE, plus mesh reimport material fixes.
kevinpbuckley/VibeUE
Changes Unreal Engine console variables, scalability levels and raw INI values through VibeUE's Python API, now that registered settings moved to the engine's own toolset.
kevinpbuckley/VibeUE
Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.
Works with
Categories
Generate heightmaps, map reference images, and water feature splines (rivers, lakes, oceans) from real-world geographic data (terraindata tool). Terrain Data is an agent skill from kevinpbuckley/VibeUE. Generate heightmaps, map reference images, and water feature splines (rivers, lakes, oceans) from real-world geographic data (terraindata tool).
Terrain Data fits situations like: the user asks to build terrain from a real location/coordinates; download a real-world heightmap; add rivers/lakes/oceans from map data.
Run `npx skills add kevinpbuckley/VibeUE --skill terrain-data -a claude-code`. Or copy the skill folder (Content/Skills/terrain-data in kevinpbuckley/VibeUE) into .claude/skills/terrain-data in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kevinpbuckley/VibeUE --skill terrain-data -a codex`. Or copy the skill folder (Content/Skills/terrain-data in kevinpbuckley/VibeUE) into .agents/skills/terrain-data 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 kevinpbuckley/VibeUE --skill terrain-data -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/terrain-data, .gemini/skills/terrain-data, .github/skills/terrain-data and .opencode/skills/terrain-data in your project.
SKILL.md names no scripts, command-line tools or credentials: Terrain Data is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. Review the folder before installing.
Terrain Data is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Terrain Data: Extraction Timing (ThibautBaissac/rails_ai_agents, 665 stars), Ue Specifiers (fjz13/UnrealSpecifiers, 1.1k stars), Antv L7 (antvis/L7, 4.1k stars) and Unreal Bridge (TornLux/UnrealBridge, 305 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kevinpbuckley (a GitHub user) maintains it in kevinpbuckley/VibeUE, which has 726 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 7, 2026.
Source: kevinpbuckley/VibeUE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.