Characteristics
Unlike physical skills that deal with real-world variability, digital skills operate in a deterministic domain:- Protocol-based: Follow defined APIs and standards
- Atomic: Many operations cannot be cancelled once started
- Reliable: Once working, behavior is consistent
- Network-dependent: Must handle connectivity issues
Built-in Skills
SendEmail
Sends email notifications, typically for alerts or status updates.SendPictureViaEmail
Sends an email with the robot’s current camera view attached.RobotState descriptor to declare required robot state that the system updates at 50Hz.
RetrieveEmails
Fetches recent emails from configured account.Creating Digital Skills
Template
Worked example: RetrieveEmails
Here’s a complete, runnable custom skill that fetches your latest Gmail messages over IMAP. Save it as~/innate-os/workspace/custom_skills/retrieve_emails.py on the robot, and reference it from an agent as local/retrieve_emails (custom skills are namespaced local/, shipped skills innate-os/):
Best Practices
Authentication- Store credentials in environment variables or secret managers
- Never hardcode passwords or API keys
- Validate credentials at initialization
- Always set explicit timeouts on network calls
- Prevent blocking indefinitely on slow services
- Design operations to be safely retryable when possible
- Consider partial failure scenarios
Requesting Robot State
Skills declare sensor data dependencies using theRobotState descriptor:
None on first access.
Available state types:
See Robot State for more details on the RobotState system.

