skills directly from any extension, and — when writing a Native Mod — register higher-priority implementations that replace the defaults entirely.
API reference
Listing available services
Callservices.list() to retrieve the full catalog of registered services:
Describing a service
Callservices.describe() with a service ID to inspect its available methods and metadata:
Built-in services
skills service
The skills service exposes Aether’s native Skill selection state.
| Method | Arguments | Description |
|---|---|---|
list | — | Returns all installed Skills |
getSelection | — | Returns currently selected Skill IDs |
setSelection | { ids, scope, session_id? } | Set the full selection |
setSelected | { skill_id, selected, scope, session_id? } | Toggle a single Skill |
"current", "default" / "global", "both" / "current_and_default". Using "both" updates the current session selection and the default selection independently.
state service
The state service provides direct read and transactional write access to Aether’s application state.
| Method | Arguments | Description |
|---|---|---|
get | { path } | Read state at path |
transaction | { operations } | Apply state mutations |
Priority system
Services are priority-ordered. The active implementation for a given service ID is always the highest-priority registration. When you remove a registration, the next-highest-priority implementation becomes active. Aether’s core services intentionally use a low priority, so a Native Mod registering the same service ID at the default Native Mod priority will seamlessly override the built-in behavior.Script Mods can call any registered service using
aether.services.invoke(), but they cannot register new service implementations. To override a built-in service or add a new one, you must use a Native Mod.