class BaseSkill:
    """Abstract interface for all Node capabilities (Shell, Browser, etc.)."""
    def execute(self, task, sandbox, on_complete, on_event=None):
        """Processes the given task and notifies results via callbacks."""
        raise NotImplementedError

    def cancel(self, task_id: str) -> bool:
        """Attempts to cancel the task and returns success status."""
        return False

    def is_available(self) -> bool:
        """Returns True if the skill's dependencies and hardware are available."""
        return True

    def shutdown(self):
        """Cleanup resources on node exit."""
        pass
