一键导入
container
Intermediate scope for inheritance — like OpenLaszlo's <node>
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Intermediate scope for inheritance — like OpenLaszlo's <node>
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Portable tokens of capability, identity, and access
The grammar rules that make MOOLLM's file system object-oriented. Plural directory names declare element type; UPPERCASE marker files declare interface exports (COM-style, minus the UUIDs); directories are implementation classes exporting every interface whose marker file sits at their root.
Mother skill for platform-descriptor sister skills. Defines what a BIOME is — a bounded region of an ecosystem (coexisting, exchanging, never isolated) for one platform you operate — and what files, subdirectories, and cross-biome bridges every daughter biome inherits.
A skill is documentation that learned to do things.
GNU Emacs as a stateful Lisp machine for agents — daemon, moo-* protocol, emacs.py router, emacs:// URLs, spoken grammar, play-learn-lift.
Schemapedia — schema plugins, families, gateways, formats.yml, mechanism_relations; self-object kernel; delegates to sibling skills.
| name | container |
| description | Intermediate scope for inheritance — like OpenLaszlo's <node> |
| license | MIT |
| tier | 1 |
| allowed-tools | ["read_file","write_file"] |
| related | ["room","object","adventure","prototype","logistic-container"] |
| tags | ["moollm","scope","inheritance","hierarchy","composition"] |
Intermediate scopes that provide inheritance without being navigable rooms.
Containers are directories that define shared properties for their children, without themselves being places you can "go to."
In OpenLaszlo (Don Hopkins' earlier work!), <node> was a fundamental building block:
<!-- OpenLaszlo: <node> provides inheritance without visual layout -->
<node name="mazeDefaults">
<attribute name="isDark" value="true"/>
<attribute name="hasDanger" value="true"/>
</node>
<view extends="mazeDefaults">
<!-- Inherits isDark, hasDanger -->
</view>
MOOLLM's CONTAINER.yml does the same for adventure directories:
# maze/CONTAINER.yml
container:
name: "The Twisty Maze"
inherits:
is_dark: true
is_dangerous: true
grue_rules:
can_appear: true
All rooms inside maze/ automatically inherit these properties!
| Type | File | Navigable? | Inherits to children? |
|---|---|---|---|
| Room | ROOM.yml | ✅ Yes | ❌ No |
| Container | CONTAINER.yml | ❌ No | ✅ Yes |
| Meta | .meta.yml | ❌ No | ❌ No (just metadata) |
Use Container when:
Use Room when:
Use .meta.yml when:
Properties in inherits: flow to ALL descendants:
maze/
├── CONTAINER.yml # inherits: { is_dark: true }
├── room-a/
│ └── ROOM.yml # Inherits is_dark: true
├── room-b/
│ └── ROOM.yml # Inherits is_dark: true
└── deep/
└── CONTAINER.yml # Can add MORE inherits
└── room-c/
└── ROOM.yml # Inherits from BOTH containers!
Children can override inherited values:
# maze/room-f/ROOM.yml
room:
name: "The Treasure Chamber"
is_dark: false # Override! This room has magical light
For objects and arrays, inheritance MERGES:
# maze/CONTAINER.yml
container:
inherits:
rules:
- "Grues patrol in darkness"
# maze/room-g/ROOM.yml
room:
rules:
- "This room has a pit trap" # ADDS to inherited rules
Result: room-g has BOTH rules.
| Field | Purpose |
|---|---|
inherits | Properties that children GET automatically |
defaults | Values to use IF a child doesn't define them |
container:
# Every child room IS dark (forced)
inherits:
is_dark: true
# If a room doesn't define atmosphere, use this
defaults:
room:
atmosphere: "damp and musty"
# maze/CONTAINER.yml
container:
name: "The Twisty Maze"
description: "Passages all alike... or are they?"
inherits:
is_dark: true
is_dangerous: true
grue_rules:
can_appear: true
safe_with_light: true
rules:
- "No teleportation"
- "Breadcrumbs disappear after 3 turns"
- "Echoes alert nearby rooms"
ambient:
sound: "dripping water"
smell: "wet stone"
temperature: cold
# characters/animals/CONTAINER.yml
container:
name: "Animal Characters"
description: "Non-human beings with souls"
inherits:
type: animal
has_instincts: true
defaults:
character:
can_speak_human: false
pet_able: true
diet: omnivore
# kitchen/appliances/CONTAINER.yml
container:
name: "Kitchen Appliances"
inherits:
type: appliance
requires_power: true
defaults:
object:
breakable: true
fixable_with: "wrench"
When looking up a property:
CONTAINER.yml in parent dirADVENTURE.yml defaultsmaze/deep/room-c/ROOM.yml
↓ inherits from
maze/deep/CONTAINER.yml
↓ inherits from
maze/CONTAINER.yml
↓ inherits from
ADVENTURE.yml (if it has defaults)
↓ inherits from
skills/room/ROOM.yml.tmpl
The linter recognizes CONTAINER.yml:
📂 Phase 1: Discovery
Found: 36 rooms, 54 objects, 6 characters
Found: 2 containers # NEW!
Containers suppress the "missing type declaration" warning:
# Before: maze/ triggers warning
⚠️ Directory has room children but no ROOM.yml
# After: maze/CONTAINER.yml exists
✅ maze/ is a container (not a room)
<node> element as non-visual scope