بنقرة واحدة
object
Interactable things in the world — the atoms of adventure
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Interactable things in the world — the atoms of adventure
التثبيت باستخدام 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 | object |
| description | Interactable things in the world — the atoms of adventure |
| allowed-tools | ["read_file","write_file"] |
| tier | 1 |
| protocol | SIMANTICS |
| tags | ["moollm","object","interaction","game","sims"] |
| related | ["room","advertisement","inventory","buff"] |
| adversary | abstraction |
"Everything is an object. Objects have slots. Slots hold data OR behavior." — Dave Ungar, Self: The Power of Simplicity
An Object is anything you can interact with in the adventure world. Keys, lamps, chests, furniture, food, tools — all objects.
Objects are the atoms of the adventure. They:
From Will Wright's SimAntics:
"The intelligence is in the objects, not the characters."
Objects advertise what they can do:
advertisements:
LIGHT:
description: "Light the lamp"
score: 80
guard: "lamp has fuel"
effect: "Darkness retreats"
The character picks from what's advertised. No hardcoded behavior.
Objects inherit from prototypes:
inherits:
- skills/objects/light-source.yml
- skills/objects/takeable.yml
A lamp inherits "light-source" behaviors without copying them.
| Property | Purpose |
|---|---|
id | Unique identifier |
name | Display name |
type | Category (item, furniture, tool) |
description | What player sees |
examine | Detailed look |
takeable | Can be picked up |
container | Can hold things |
contains | What's inside |
state | Mutable properties |
advertisements | Available actions |
inherits | Prototype chain |
Objects have mutable state:
state:
lit: false
fuel: 100
uses_remaining: 3
State changes are tracked in YAML. The adventure is the save game.
THE SIMS INSIGHT: Objects manage their own simulation!
Every object can have a simulate property — a natural language description of what happens each turn. The compiler generates a closure that receives world.
simulate: |
if lit:
consume_fuel(1)
if fuel <= 0:
extinguish()
emit("The lamp sputters and dies!")
This compiles to:
simulate_js: (world) => {
if (world.object.state.lit) {
world.consume_fuel(1);
if (world.object.state.fuel <= 0) {
world.extinguish();
world.emit("The lamp sputters and dies!");
}
}
}
WILL WRIGHT INSIGHT:
"SimCity zones are self-healing. If one tile burns but the center survives, the zone will eventually rebuild."
Simulation functions should be:
// BAD: crashes if state is undefined
if (world.object.state.fuel > 0) { ... }
// GOOD: defensive access
if ((world.object.state?.fuel ?? 0) > 0) { ... }
simulate: |
first ensure state.lit exists (default false)
ensure state.fuel exists (default 100)
then proceed with normal simulation
The compiled code initializes missing state:
simulate_js: (world) => {
const state = world.object.state ??= {};
state.lit ??= false;
state.fuel ??= 100;
// Now safe to proceed...
}
simulate: |
if fuel is somehow negative, reset to 0
if lit but fuel is 0, extinguish (inconsistent state!)
if broken flag is set but durability is full, clear broken
The compiled code heals invalid states:
simulate_js: (world) => {
const state = world.object.state;
// Heal negative values
state.fuel = Math.max(0, state.fuel);
// Heal inconsistency
if (state.lit && state.fuel <= 0) {
state.lit = false; // Self-heal
world.emit("The lamp was somehow lit without fuel — fixed.");
}
}
defaults FieldObjects can declare their default state values:
object:
id: brass-lantern
defaults:
lit: false
fuel: 100
durability: 100
simulate: |
ensure all defaults are initialized
...
The runtime merges defaults into state before simulation.
Objects can define named methods that simulate or advertisements can call. Natural language → compiled closures. 1:1 mapping!
methods:
consume_fuel: "reduce fuel by amount, minimum 0"
extinguish: "set lit to false, emit darkness event"
ignite: "set lit to true if fuel > 0"
Compiles to:
methods_js: {
consume_fuel: (world, amount) => {
world.object.state.fuel = Math.max(0, world.object.state.fuel - amount);
},
extinguish: (world) => {
world.object.state.lit = false;
world.emit('DARKNESS');
},
ignite: (world) => {
if (world.object.state.fuel > 0) world.object.state.lit = true;
}
}
consume_fuel(1) in YAML → world.consume_fuel(1) in JSextinguish() can call other methodseffectObject
├── state (mutable data)
├── simulate (per-turn update)
├── methods (named behaviors)
└── advertisements (player actions)
Advertisements call methods. Simulate calls methods. Methods update state.
Everything flows through compiled closures over world.
Each advertisement can have:
LIGHT:
description: "Light the lamp" # What it does
score: 80 # Base attractiveness
score_if: "player is in dark room" # When to boost
guard: "lamp has fuel" # Can you do it?
effect: "Lamp is now lit" # What happens
Natural language fields (score_if, guard, effect) are compiled to JS/PY.
Containers hold other objects:
container: true
contains:
- brass-key
- old-map
capacity: 10
locked: true
object:
id: brass-key
name: "Brass Key"
emoji: "🔑"
description: "A heavy brass key."
takeable: true
object:
id: oil-lamp
name: "Oil Lamp"
emoji: "🪔"
state:
lit: false
fuel: 100
advertisements:
LIGHT:
guard: "fuel > 0 AND not lit"
effect: "The lamp flickers to life."
object:
id: treasure-chest
name: "Treasure Chest"
container: true
locked: true
contains:
- gold-coins
- magic-ring
advertisements:
UNLOCK:
guard: "player has chest-key"
effect: "The lock clicks open."
SIMANTICS — The Sims behavioral architecture