diff --git a/source/RobotAPI/libraries/skills/provider/SkillID.cpp b/source/RobotAPI/libraries/skills/provider/SkillID.cpp
index 4619f717f4eeeedc4f7e61dc8ca0698241966b00..07c6248b2f8c366ceeb7782b78315a6d16f74c70 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillID.cpp
+++ b/source/RobotAPI/libraries/skills/provider/SkillID.cpp
@@ -37,4 +37,9 @@ namespace armarx
             return (prefix.empty() ? std::string("") : (prefix + PREFIX_SEPARATOR)) + providerName + NAME_SEPARATOR + skillName;
         }
     }
+
+    std::ostream& skills::operator<<(std::ostream& os, const SkillID& id)
+    {
+        return os << "'" << id.toString() << "'";
+    }
 }
diff --git a/source/RobotAPI/libraries/skills/provider/SkillID.h b/source/RobotAPI/libraries/skills/provider/SkillID.h
index 4c44ba82db38ce760a333adfa8518b6e86b62159..320a6e946e04694c6d703d0f78b18552d756cf7d 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillID.h
+++ b/source/RobotAPI/libraries/skills/provider/SkillID.h
@@ -32,5 +32,7 @@ namespace armarx
             provider::dto::SkillID toIce() const;
             std::string toString(const std::string& prefix = "") const;
         };
+
+        std::ostream& operator<<(std::ostream& os, const SkillID& id);
     }
 }