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. The runtime injects declared interfaces, and the Innate agent reads your signature/docstrings to call the skill correctly.Use this style when you want deterministic physical control, digital/API operations, 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 to Put Your Skills
- Code-defined skill → a single Python file:
~/innate-os/workspace/custom_skills/my_skill.py - Policy-defined (physical) skill → a directory with its metadata and checkpoint:
~/innate-os/workspace/custom_skills/my_skill/metadata.json
Skill IDs: local/ vs innate-os/
Skill IDs are namespaced by origin, and agents must use the full ID:A bare name without the prefix won’t resolve — this is the second most common reason a skill “doesn’t work” after putting the file in the wrong directory.
local/<name>— your skills (anything incustom_skills/)innate-os/<name>— shipped skills (ininnate_skills/)
"local/my_skill", not "my_skill":| Directory | Purpose | Skill ID prefix |
|---|---|---|
~/innate-os/workspace/custom_skills/ | Your skills (gitignored, survives OS updates) | local/<name> |
~/innate-os/workspace/innate_skills/ | Shipped skills (tracked in git, updated by git pull) | innate-os/<name> |
~/skills/, ~/innate-os/skills/) from releases before the workspace layout are still scanned, and you can add extra directories with extra_skill_dirs under the script_paths section of config/settings.yaml. Skills from any of these also get the local/ prefix — only innate_skills/ produces innate-os/ IDs.
