Two Types of Skills
Skills are defined in one of two ways.Code-Defined Skills
Code-Defined Skills
Code-defined skills are Python classes with explicit logic. Declare what the skill needs as type annotations and the runtime injects it; the Innate agent reads your The class name (snake_cased) is the skill name, so
guidelines() and execute() signature to call the skill correctly.LookAround is callable as look_around. Use this style when you want deterministic physical control, API and web-service calls, explicit sequencing, or custom sensor processing.Policy-Defined Skills (End-to-End)
Policy-Defined Skills (End-to-End)
Policy-defined skills are learned policies trained from demonstrations. For manipulation, the current workflow uses ACT (Action Chunking with Transformers).Use this style when behavior is easier to learn from data than encode by hand, especially for visuomotor manipulation.
Where skills live
Your skills go in~/innate-os/workspace/custom_skills/ on the robot.
workspace/ is an ordinary Python package, and defining a Skill subclass is the registration — there’s no file to edit and no name to declare. That means normal Python works: several skills in one file, helpers next to them, relative imports, one skill split across a subpackage.
- Code-defined skill → a class in any
.pyfile:custom_skills/my_skill.py - Policy-defined (physical) skill → a directory with its metadata and checkpoint:
custom_skills/my_skill/metadata.json
What ships with the robot
workspace/innate_skills/ already contains a working set. Read them — they’re the best examples of the API, and you can import any of them into an agent or call them from your own skill.
Don’t edit these in place — a
git pull will overwrite your changes. Copy the one you want into custom_skills/, rename the class, and edit that.Skill IDs
Each skill gets an id namespaced by the package it lives in —innate-os/wave, local/my_skill. You mostly don’t type these: agents and composing skills reference the class. Ids are what the app displays and what you use when a skill isn’t importable from where you need it.
Skill packs
A folder of skills someone else wrote installs by dropping it intoworkspace/. If the pack lives elsewhere on disk — a team checkout, a mounted volume — symlink it instead:
team_skills/<name>).
This replaces the
extra_skill_dirs / extra_agent_dirs settings from OS 0.6.x.
