Scene Hierarchy Design logo

Scene Hierarchy Design

Organization
SummerEngine
scene-hierarchy-design

Structure scenes by access pattern: asset vs live hierarchies, wrapper nodes, sub-scenes, path-agnostic code.

Overview

PublisherSummerEngine
Repositorysummer
Skill namescene-hierarchy-design
Stars
91
Forks
8
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by SummerEngine on GitHub. Read the source before you install it.

Installation

Install the Scene Hierarchy Design AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/SummerEngine/summer/tree/main/library/skills/scene-hierarchy-design
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/SummerEngine/summer.git /tmp/summer
mkdir -p .claude/skills
cp -r /tmp/summer/library/skills/scene-hierarchy-design .claude/skills/scene-hierarchy-design
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Scene Hierarchy Design in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Scene Hierarchy Design on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Scene Hierarchy Design is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Scene Hierarchy Design for Summer Engine (Data-Oriented Principles)

Outcome

Scenes in Summer Engine that are organized by access pattern, not by accident: clear separation between reusable asset scenes (.tscn prefabs) and the live node tree, wrapper grouping where whole subtrees are operated on together, flat siblings where type-wide queries dominate, and gameplay logic that does not depend on deep fragile node paths.

When to Use

  • Structuring a new scene (level, character, prop cluster, UI screen) from scratch.
  • Reorganizing a scene that has grown ad hoc (long chains, duplicate setups, hard-to-delete clusters).
  • Deciding whether a setup belongs inline or as a separate sub-scene.
  • Reviewing whether existing scenes match the dominant operations the game performs on them (spawn/despawn clusters, iterate all of a type, move single nodes).

Do not use this for shader/material work, asset import mechanics, or gameplay tuning — it is purely about hierarchy shape.

Core Principle (translated)

Sander Mertens' ECS article evaluates hierarchies on two axes and both translate directly:

  1. Usability: two hierarchy kinds must compose. Asset hierarchies (inheritance, variations, property overrides → .tscn sub-scenes and scene inheritance) and scene hierarchies (live parent-child relations → the node tree). A scene that repeatedly rebuilds the same inline cluster is missing its asset hierarchy; an asset scene nobody instantiates is dead weight.
  2. Performance: match structure to dominant access patterns. Group nodes stored/operated together under one parent (subtree operations become one operation); keep nodes queried independently as flat siblings. There is no universally optimal depth — analyze usage before picking one.
  3. Hierarchy-agnostic logic. The article's hybrid design keeps application code independent of storage; the Summer translation is: scripts and agents should not hardcode deep paths. Use groups, signals, and exported NodePath references instead of long ancestor chains.

Summer Engine Integration

Scene hierarchy features from the article map onto Summer MCP tools as follows:

Feature (article)Summer Engine tool
Instantiate assetssummer_instantiate_scene
Recursively despawnsummer_remove_node on the wrapper parent (removes the subtree)
Reparent childrensummer_remove_node + summer_add_node/summer_instantiate_scene under the new parent
Iterate the live hierarchysummer_get_scene_tree (always read before mutating)
Lookup by namedescriptive, unique node names resolved from summer_get_scene_tree

Recommended scene shape — group by operation, name by role:

World (Node3D)                  # scene root
├── Camera3D                    # unique to this scene → inline
├── DirectionalLight3D          # unique → inline
├── Level (Node3D)              # wrapper: geometry operated as one subtree
├── Props (Node3D)              # wrapper: spawn/despawn clusters together
│   ├── Crate_01 (instance of res://scenes/props/crate.tscn)
│   └── Barrel_01 (instance)
├── Enemies (Node3D)            # wrapper: recursive clear of all enemies
│   └── Grunt_01 (instance of res://scenes/enemies/grunt.tscn)
└── Player (instance of res://scenes/player.tscn)

Rules of thumb:

  • Wrapper node per operation boundary. If you ever need to "remove all enemies", "hide all props", or "rebuild the level", they share one parent; the operation becomes a single node op.
  • Sub-scene per reusable setup. Same cluster appearing twice or more → extract to its own .tscn and instantiate. One-offs (main camera, a level-specific light) stay inline.
  • Flat over deep. Every extra level of nesting adds path length and fragility. Prefer named sibling containers over long chains.
  • Unique descriptive names. The engine auto-renames duplicates (Node, Node2); that breaks name lookup. Name by role and index (Crate_01).
  • Never mix 2D under 3D (or vice versa) in one hierarchy.

Agent Procedure

Follow the canonical scene loop from the Summer MCP reference: route → orient → read rules → resolve scenePath → mutate → verify.

  1. Orient. summer_call {"op":"docs.plan"} to route the goal; summer_get_project_context; summer_call {"op":"summer_get_agent_playbook"}.
  2. Read before writing. summer_get_scene_tree on the exact res://...tscn. Never mutate blind, and never edit .tscn text while the engine is running — use the MCP tools.
  3. Pick the access pattern. For each planned cluster decide: operated as a subtree (→ wrapper parent), queried by type across the scene (→ flat siblings + group), or unique (→ inline under root container).
  4. Build asset hierarchies first. For reusable setups create the sub-scene (summer_create_scene / build inline then summer_save_scene(scenePath="res://main.tscn", path="res://scenes/<name>.tscn")), then bring them in with summer_instantiate_scene(scenePath="res://main.tscn", parent="./<Wrapper>", scene="res://scenes/<name>.tscn", name="<Role>_01").
  5. Add inline nodes with summer_add_node(parent="./<Wrapper>", type="...", name="...", scenePath="res://main.tscn"). Parent paths are relative with the ./ prefix (./, ./World/Props); never /World or bare World.
  6. Keep logic path-agnostic. When a script must reach another node, add it to a group or export a NodePath/signal connection (summer_connect_signal) rather than hardcoding ./World/Enemies/Grunt_01/Weapon.
  7. Every mutation names its target. Pass the exact scenePath to every add/set/remove/instantiate call. Dedicated mutation tools append one final save; use summer_save_scene only for save-as or an explicit flush.
  8. Verify. summer_get_script_errors, then summer_get_scene_tree again to confirm the intended shape; summer_screenshot (editor viewport) for visual confirmation; summer_play → summer_get_debugger_errors → summer_stop only when runtime behaviour matters.

Failure Modes

  • Deep fragile paths in scripts. Hardcoded ancestor chains break on any reorganization; this is the direct analogue of the article's warning against logic coupled to hierarchy storage. Use groups/signals/exported paths.
  • Inline duplication instead of sub-scenes. The same 5-node cluster rebuilt in three levels → edits must be made three times, and despawn/iteration must enumerate each copy. Extract the asset hierarchy.
  • Over-grouping. Wrapping every node in its own container adds depth without enabling any operation. Group only where a real subtree operation exists.
  • Duplicate/unnamed nodes. Auto-renamed Node2 nodes break lookup-by-name. Rename immediately after adding.
  • Wrong parent path. ./NonExistent fails; ensure the parent exists before adding children (read the tree first).
  • Copying a scene as a template without auditing transforms. Carried-over instances keep world-space offsets baked for the source level; re-zero or drop transform overrides per instance.
  • Direct .tscn edits while running. They get overwritten when the editor saves; always go through MCP scene tools.

Verification

  1. summer_get_scene_tree shows the intended wrapper structure with unique descriptive names and no auto-renamed nodes.
  2. Each repeated setup exists once as a .tscn and appears elsewhere only as instances.
  3. Deleting a wrapper parent (summer_remove_node) removes exactly its subtree — the recursive-despawn feature works.
  4. No script references a path deeper than one or two segments; group/signal/NodePath used instead.
  5. summer_get_script_errors and (if played) summer_get_debugger_errors are clean; summer_screenshot matches the intended layout.

From a shell

No Summer MCP tools in this session? Run each one as a command; when summer --version is missing or below 4.0, use npx -y summer-engine@latest in place of summer. Fields are flags in kebab-case (--scene-path res://main.tscn) or one --input '<json>', and summer ops describe <op> prints the exact input. The summer-cli skill has the rest.

In this skillCommand
docs.plansummer docs plan
summer_add_nodesummer engine add-node
summer_connect_signalsummer engine connect-signal
summer_create_scenesummer engine create-scene
summer_get_debugger_errorssummer engine get-debugger-errors
summer_get_project_contextsummer engine get-project-context
summer_get_scene_treesummer engine get-scene-tree
summer_get_script_errorssummer engine get-script-errors
summer_instantiate_scenesummer engine instantiate-scene
summer_playsummer engine play
summer_remove_nodesummer engine remove-node
summer_save_scenesummer engine save-scene
summer_screenshotsummer engine screenshot
summer_stopsummer engine stop
summer_get_agent_playbooksummer tool get-agent-playbook

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Scene Hierarchy Design AI skill do?

Structure scenes by access pattern: asset vs live hierarchies, wrapper nodes, sub-scenes, path-agnostic code.

Why use Scene Hierarchy Design on TypingMind?

Because you install it once and use it with any model. Scene Hierarchy Design is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Scene Hierarchy Design in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/SummerEngine/summer/tree/main/library/skills/scene-hierarchy-design. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Scene Hierarchy Design?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Scene Hierarchy Design?

As many as you like. As long as a model supports skills, you can use Scene Hierarchy Design with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Scene Hierarchy Design AI skill free?

Yes. It is published on GitHub by SummerEngine under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇