Threejs World Generation
calesthio/OpenMontage
Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs.
A skill your agent uses when modeling hard-surface objects in Blender (sci-fi panels, props, weapons, vehicles, robots, machined or product parts) with booleans and cutters, bevel modifiers…
$ npx skills add scenario-labs/skills --skill scenario-blender-hard-surface -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install scenario-labs/skills scenario-blender-hard-surface --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/blender/scenario-blender-hard-surface .claude/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .claude/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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/blender/scenario-blender-hard-surfaceType 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-blender-hard-surface -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install scenario-labs/skills scenario-blender-hard-surface --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/blender/scenario-blender-hard-surface .agents/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .agents/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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-blender-hard-surface -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install scenario-labs/skills scenario-blender-hard-surface --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/blender/scenario-blender-hard-surface .cursor/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .cursor/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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/blender/scenario-blender-hard-surface--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-blender-hard-surface -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install scenario-labs/skills scenario-blender-hard-surface --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/blender/scenario-blender-hard-surface .gemini/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .gemini/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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-blender-hard-surfaceInstalls 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-blender-hard-surface -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/blender/scenario-blender-hard-surface .github/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .github/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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-blender-hard-surface -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-blender-hard-surface --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/blender/scenario-blender-hard-surface .opencode/skills/scenario-blender-hard-surface && 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-blender-hard-surface" agent skill from https://github.com/scenario-labs/skills/tree/main/skills/dcc/blender/scenario-blender-hard-surface into .opencode/skills/scenario-blender-hard-surface/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scenario-blender-hard-surface", 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-blender-hard-surfaceA skill your agent uses when modeling hard-surface objects in Blender (sci-fi panels, props, weapons, vehicles, robots, machined or product parts) with booleans and cutters, bevel modifiers…
Scenario Blender Hard Surface is an agent skill from scenario-labs/skills. Use when modeling hard-surface objects in Blender (sci-fi panels, props, weapons, vehicles, robots, machined or product parts) with booleans and cutters, bevel modifiers, weighted normals, or subdivision with support loops or creases. Also when shading is broken (smears on flat faces, stretching near a cut, pinching), a bevel shrinks or vanishes after a boolean, a boolean empties the mesh or leaves holes, choosing n-gons vs quads, or making a game-ready mid-poly.
Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/critique.md`, `references/expert-notes.md` and `references/procedures.md`).
It sits in Game Development. It works with Blender. 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.
8 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 Blender Hard Surface loads about 4.6k tokens when it runs, and up to ~21k if it reads all its reference files. Until then it costs about 124 tokens; SKILL.md has 2,019 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,019 words, ~4,574 tokens.
.claude/skills/scenario-blender-hard-surface/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Expert hard surface is controlled light on edges: every edge catches a highlight from a bevel or a support loop, flat faces read perfectly flat, and cuts stay editable until the design is settled. The experts disagree on method (n-gons and booleans vs quad cages and subdivision), not on the checks: order of operations, cutter hygiene, planar faces, a shiny matcap orbit. The agent builds the stack with the toolkit and lets the measurable gates find what a human finds by orbiting. 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-blender-expert (execution channel, review loop, 5.2 API changes). Toolkit: scripts/bx_hardsurface.py (import sys; sys.path.append("<skills>/scenario-blender-hard-surface/scripts"); import bx_hardsurface as HS), world-space meters, stock Blender only.
HS.order_stack does it and HS.add_boolean always lands above the tail (verified).HS.clamp_culprits names the cut.| Input | Why it changes the plan | Default when silent |
|---|---|---|
| Purpose | render: 3+ micro segments (Gambrell); game mid-poly: 1 to 2 segments, triangulated, custom normals; bake: subD or boolean high + separate low | render still |
| Real size | bevel widths are absolute: du Mont uses about 3 mm on a small robot body, 1 mm on small parts, 0.1 mm on a collar | model at real size; if unknown, micro width 0.5% of the largest dimension [added] |
| Surface | mostly planar vs curved vs organic-mechanical | School A for planar parts, B for curved shells, hybrid when mixed |
| Budget and engine | Augusto: 15k tris, one 2K map; a quad-only pipeline forces School B (Gambrell [00:24:35]) | no budget: report tris |
| Later stages | sculpted damage or multires detail needs a quad cage (PzThree); rigging needs collapsed copies (du Mont) | none |
| Symmetry | mirror the target when the part is symmetric; mirror the cutter around the target when only the cut is (Gambrell [00:14:53]) | ask the reference |
HS.apply_scale(ob) (keeps children in place, flips winding on negative scale). Check proportions against a human-scale box through a long lens (du Mont [00:10:01]). GATE: scale is 1 on every object with a bevel, solidify or array; silhouette sheet reads (bx_review.review(..., modes=("silhouette",))).HS.find_edges(ob, min_angle=80, inside=...) + HS.set_edge_attr(ob, edges, 1.0), then HS.hard_surface_stack(ob, micro_width=..., design_width=...).HS.subd_stack(ob, support_width=...) (Bevel Weight, even segments, profile 1.0, Subdivision with UV Smooth Keep Corners) or explicit HS.support_loops.
GATE: HS.stack_problems(ob) == []; A has custom normals on the evaluated mesh.HS.make_cutter(target, "BOX"|"CYLINDER"|"SLOT", size, location, ...) builds a cutter that meets the checklist (scale 1, smooth, Cutters collection only, wire, hidden from render, parented, EXACT, wired above the tail). HS.as_cutter for custom shapes, HS.slice_boolean for Slice. Rules: extend past every surface entered; keep cutter edges far from target edges or exactly on them; offset a round cutter by half a segment against a target with the same count (same phase gave 10 non-manifold edges and streaks [verified]; make_cutter default); round cutter corners in facets well under the bevel angle (4+ segments per 90 degrees). GATE after each cut: HS.cutter_report(c, target) clean, HS.clamp_probe(target)["ratio"] < 0.1, a HS.closeup of the cut looked at.r = HS.shading_audit(ob); HS.verdict(r), then HS.review([ob], out, modes=("matcap","reflect","hsgrey","wire")) and closeups. Triage with references/critique.md: smear on flat faces, non-planar faces, cuts on curvature (render first: Harden + WN already shaded 24/48-segment cylinder cuts cleanly; on a sphere HS.transfer_normals cut the normal error p95 from 2.79 to 0.34 degrees [verified]), mirror seam (HS.mirror_seam_fix). GATE: verdict empty or every remaining line explained, and the closeups agree.r["subd_cage"] quads near 100%, no long rectangles on a cage that will be sculpted, shiny-matcap closeups free of pinches.g, tris = HS.game_version(ob, micro_segments=1) (Triangulate with keep custom normals after WN; stays in place because it shares the cutters); glTF kept the custom normals 100% [verified]. Baked asset: the low poly and bake go to scenario-blender-retopology and scenario-blender-uv-baking. Rig or export: HS.collapse(ob) on a copy (du Mont [01:07:29]). GATE: tri count within budget, triangles only, matcap closeup of the game copy.| Value | Setting | Relative to / source |
|---|---|---|
| Micro bevel | angle 30 degrees, 3 segments render, 1 to 2 game, Harden Normals, Miter Outer Arc | Gambrell [00:17:20], du Mont [00:14:40] |
| Micro width | about 3 mm body, 1 mm small parts, 0.1 mm collar | real size, du Mont |
| Design bevel | Limit Method Weight, 8 to 12 segments | du Mont [00:13:32] |
| Big rolling curve | 46 to 50 segments; cutter edge bevels about 8 to 10 | Ryuu [00:12:53], [00:05:42] |
| Min feature | wall, step, groove, facet width > 2 x micro width | [added, verified] |
| Clamp probe | displacement over 10% of width = clamping | [added] |
| Solver | EXACT; MANIFOLD for speed with manifold operands; FLOAT only to diagnose | verified in 5.2.1 |
| Round cutters | vertex count set at creation (40 for screw holes); half-segment phase vs target | Ryuu [00:29:43]; [verified] |
| Bevel before Subdivision | 2 or 4 segments, profile 1.0, Weight, UV Smooth Keep Corners | Lampel [00:08:06], [00:11:15] |
| Creases | fine for small details or rounding a coarse cylinder at level 1; 10x tris for primary edges | Lampel, du Mont [00:52:18] |
| SubD cage | circle 18 verts body, 36 on a denser part; square quads | rileyb3d [00:01:34], PzThree [00:03:15] |
| Mirror seam fix | bevel Face Strength Affected + WN Face Influence, weight 100 | Gambrell [00:06:57] |
| Game budget | 15k tris, one 2K map, animated parts separate | Augusto [00:11:48] |
| Cost measured | case 1,984 tris (A) vs 4,608 (B, level 2); barrel 7,308 (A), 25,728 (B), 3,716 (A game) | test_03 [added] |
In code (all in HS.shading_audit, readable through HS.verdict): scale applied; stack_problems empty; custom normals present when expected; 0 non-manifold edges; 0 flat-shaded faces; 0 non-planar base faces (tolerance 1e-4 x size); no smear (corner normal leaning over 3 degrees on a flat face [added]); no hard edge (over 45 degrees) smoothed across; clamp ratio under 0.1; every boolean changes the mesh; cutter reports clean (coplanar, near-parallel, thin wall, narrow gap, near-miss, rounding facets, pokes out, hygiene). School B: quads %, quad aspect, crease length. Game: HS.tri_count, triangles only.
Visual: HS.review rows matcap (forms), reflect (check_reflection_horizontal: stripes run continuous over bevels and rounds), hsgrey (bevel highlights), wire (real boolean topology); views front, threequarter, top, low. Then one HS.closeup(ob, point, radius, ...) per cut in shiny (metal_carpaint). Look for gradient smears on flat faces, a bevel highlight broken or narrower at a cut, stretch at cut corners on curves, a butterfly on a mirror seam, subD pinches, facets on cut walls. A straight-down shiny view saturates white: use matcap or hsgrey from the top.
| Mistake | What it looks like | Fix |
|---|---|---|
| Boolean below the micro bevel | cut edges razor sharp, rest beveled | HS.order_stack(ob) |
| Weighted Normal added after pinning the bevel | WN lands above the bevel, smears return | pin bottom-up (order_stack) |
| Cutter near but not on a target face or edge | whole-object bevel narrower, thin steps | move clearly away or snap exactly; cutter_report, clamp_culprits |
| Groove or wall thinner than 2x bevel | clamped bevels everywhere | widen the feature or thin the bevel |
| Round cutter in phase with the target facets | streaks, black patches, non-manifold edges | half-segment phase (default in make_cutter) |
| Rounded cutter corners at 30-degree facets | micro bevel catches facet edges, clamps | more segments (beveled_narrow_facet_edges) |
| Flat-shaded cutter | facets on the cut walls | cutters smooth (make_cutter does it) |
| "Switch to Fast" | non-manifold result on coplanar faces | EXACT; repair the operand instead |
| Unapplied scale | uneven bevel widths | HS.apply_scale |
| Stacking normal fixes on a non-planar face | stretch that nothing fixes | HS.flatten_faces |
| Data Transfer placed before WN, or scoped by a vertex group | no effect / cut walls shaded like the skin | HS.transfer_normals (after WN, distance-scoped) |
| du Mont's support cut placed through a round cut | rim edges halved, clamp 0 to 1.2 [verified] | only where sliver_report shows boolean slivers; measure before and after |
| Creases on primary subD edges | soft, pinched, heavy | support loops or bevel before subdivision |
| Moving a game copy or slice | cuts vanish (cutters stay with the original) | keep it in place, or HS.collapse then move |
bpy.ops.object.shade_auto_smooth adds a pinned Smooth by Angle node modifier (works headless with temp_override); WN, Harden Normals and Data Transfer need no Auto Smooth.'EXACT' (default), 'MANIFOLD' (4.5), 'FLOAT' (the old Fast, renamed 5.0).bevel_weight_edge / crease_edge (4.0); the Bevel modifier reads any attribute through edge_weight.ob.modifiers.move(i, j) silently refuses moves that involve pinned modifiers; modifier_move_to_index returns CANCELED. Unpin, move, re-pin bottom-up.bmesh.ops.bevel defaults are segments=0, profile=0.0: always pass both.mesh.circularize, mesh.flatten, mesh.space_edge_loops_evenly); Relax and Round Cube are not.references/procedures.md: full tested code for the three parts (panel, case both schools, barrel both schools), every audit case, game routes. Load before scripting.references/critique.md: the rubric and triage table to judge a render and a verdict. Load at every shading pass.references/expert-notes.md: the experts' principles, disagreements and deciding conditions, with timestamps. Load when a choice is not covered here.references/sources.md: the nine videos, who, what each is best for, 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 5 other files (scripts, references) in skills/dcc/blender/scenario-blender-hard-surface of scenario-labs/skills.
Open the folder on GitHubat commit f6f8ab7
Scenario Blender Hard Surface 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 Blender Hard Surface this skillscenario-labs/skills | 946 | — | ~4.6k | Automated safety check: Pass | MIT | |
| Threejs World Generationcalesthio/OpenMontage | 66k | — | ~2k | Automated safety check: Pass | AGPL-3.0 | |
| 3Dviz Pro Max Scene Builderviettranx/3dviz-pro-max | 709 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Asset Pipelinerehan-remade/universal-modder | 6.5k | — | ~2k | Automated safety check: Pass | MIT | |
| Blender Image To 3Dmajidmanzarpour/blender-game-skills | 135 | — | ~5.7k | Automated safety check: Pass | MIT | |
| Text To 3D AssetLaurentiuGabriel/unreal-game-assets-creation-skill | 148 | — | ~2.1k | Automated safety check: Pass | None |
calesthio/OpenMontage
Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs.
viettranx/3dviz-pro-max
Guides building an expressive 3D scene in Three.js or Blender by reasoning through intent, object construction and scientific grounding before using a catalog of recipes and kits.
rehan-remade/universal-modder
Turn generated or hand-made art into exactly what a game engine loads.
majidmanzarpour/blender-game-skills
Build a game-ready 3D asset in Blender from reference images (concept art, photos, turnarounds, sketches, screenshots) for any category, including characters, creatures, architecture, vehicles…
LaurentiuGabriel/unreal-game-assets-creation-skill
Generate a game-ready 3D asset by running the local AI pipeline sequentially: Fooocus (SDXL text-to-image) - Hunyuan3D-2 (image-to-textured-GLB) - optional Blender FBX convert + Unreal import.
zenstory-ai/novel-to-game
Builds a risk-matched whitebox or an approved production game candidate from a game design for its target runtime, with replayable evidence.
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…
Works with
Categories
A skill your agent uses when modeling hard-surface objects in Blender (sci-fi panels, props, weapons, vehicles, robots, machined or product parts) with booleans and cutters, bevel modifiers…. Scenario Blender Hard Surface is an agent skill from scenario-labs/skills. Use when modeling hard-surface objects in Blender (sci-fi panels, props, weapons, vehicles, robots, machined or product parts) with booleans and cutters, bevel modifiers, weighted normals, or subdivision with support loops or creases.
Scenario Blender Hard Surface fits situations like: modeling hard-surface objects in Blender (sci-fi panels; product parts) with booleans and cutters; bevel modifiers; weighted normals.
Run `npx skills add scenario-labs/skills --skill scenario-blender-hard-surface -a claude-code`. Or copy the skill folder (skills/dcc/blender/scenario-blender-hard-surface in scenario-labs/skills) into .claude/skills/scenario-blender-hard-surface in your project. Claude Code loads it when a task matches its description.
Run `npx skills add scenario-labs/skills --skill scenario-blender-hard-surface -a codex`. Or copy the skill folder (skills/dcc/blender/scenario-blender-hard-surface in scenario-labs/skills) into .agents/skills/scenario-blender-hard-surface 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-blender-hard-surface -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-blender-hard-surface, .gemini/skills/scenario-blender-hard-surface, .github/skills/scenario-blender-hard-surface and .opencode/skills/scenario-blender-hard-surface in your project.
Going by SKILL.md and its folder, Scenario Blender Hard Surface 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 Blender Hard Surface is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.6k tokens (SKILL.md is roughly 18k 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 16k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Scenario Blender Hard Surface: Threejs World Generation (calesthio/OpenMontage, 66k stars), 3Dviz Pro Max Scene Builder (viettranx/3dviz-pro-max, 709 stars), Asset Pipeline (rehan-remade/universal-modder, 6.5k stars) and Blender Image To 3D (majidmanzarpour/blender-game-skills, 135 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.