diff --git a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
index fe8af64e0f5234e7486ba220589e8fcc880d2edb..b95ebf9bc2058093f917b7f5bfd2dd976df7ae29 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
+++ b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
@@ -20,6 +20,7 @@ set(SOURCES
     Timeout.cpp
     Segfault.cpp
     RandomExitStatus.cpp
+	Sleep.cpp
 )
 
 set(HEADERS
@@ -31,6 +32,7 @@ set(HEADERS
     Timeout.h
     Segfault.h
     RandomExitStatus.h
+	Sleep.h
 )
 
 armarx_add_component("${SOURCES}" "${HEADERS}")
@@ -40,6 +42,7 @@ armarx_enable_aron_file_generation_for_target(
         ${ARMARX_COMPONENT_NAME}
     ARON_FILES
         aron/HelloWorldAcceptedType.xml
+		aron/SleepAcceptedType.xml
 )
 
 #generate the application
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
index 6eb6479239c09ee1d79f27e24c3370dd935c3be6..142465a88c63cde5e95294280177b0f0378082d0 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
@@ -65,6 +65,10 @@ namespace armarx::skills::provider
         // random exit status
         ARMARX_INFO << "Adding skill RandomExitStatus";
         addSkillFactory<RandomExitStatus>();
+
+        // random exit status
+        ARMARX_INFO << "Adding skill Sleep";
+        addSkillFactory<Sleep>();
     }
 
     void
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
index 3bcce3e2ca728794223e755e9aa7accce01b799f..e65cc44ba62144d2797e834e9b96b82d36f332db 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
@@ -33,9 +33,10 @@
 #include "Chaining.h"
 #include "HelloWorld.h"
 #include "Incomplete.h"
+#include "RandomExitStatus.h"
 #include "Segfault.h"
+#include "Sleep.h"
 #include "Timeout.h"
-#include "RandomExitStatus.h"
 
 namespace armarx::skills::provider
 {
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Sleep.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Sleep.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1cd8bf8b75922139be7148bbbed58db063107ad2
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Sleep.cpp
@@ -0,0 +1,68 @@
+#include "Sleep.h"
+
+#include <chrono>
+#include <thread>
+
+#include <ArmarXCore/core/time/DateTime.h>
+
+namespace armarx::skills::provider
+{
+    Sleep::Sleep() :
+        SimpleSpecializedSkill<skills::Example::SleepAcceptedType>(GetSkillDescription())
+    {
+    }
+
+    SkillDescription
+    Sleep::GetSkillDescription()
+    {
+        armarx::skills::Example::SleepAcceptedType root_profile_params;
+        root_profile_params.Timeout_ms = 5000;
+
+        return SkillDescription{
+            .skillId = skills::SkillID{.skillName = "Sleep"},
+            .description =
+                "This skill exits after the provided time (or five minutes, whichever is lower).",
+            .rootProfileDefaults = root_profile_params.toAron(),
+            .timeout = armarx::core::time::Duration::Minutes(5),
+            .parametersType =
+                armarx::skills::Example::SleepAcceptedType::SleepAcceptedType::ToAronType()};
+    }
+
+    void
+    Sleep::onStopRequested()
+    {
+        aborted = true;
+    }
+
+    Skill::MainResult
+    Sleep::main(const SpecializedMainInput& in)
+    {
+        timeout = armarx::Duration::MilliSeconds(in.parameters.Timeout_ms);
+        auto start = armarx::DateTime::Now();
+        for (;;) // forever
+        {
+            if (aborted)
+            {
+                ARMARX_INFO << "Skill has been woken up by abort.";
+                return Skill::MakeAbortedResult();
+            }
+
+            // check if the time is over
+            auto now = armarx::DateTime::Now();
+            auto diff = now - start;
+            if (diff >= timeout)
+            {
+                ARMARX_INFO << "Skill has woken up by timeout.";
+                return Skill::MakeSucceededResult();
+            }
+            else
+            {
+                std::this_thread::sleep_for(std::chrono::milliseconds(100));
+            }
+        }
+
+        return {TerminatedSkillStatus::Succeeded, in.parameters.toAron()};
+    }
+
+
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Sleep.h b/source/RobotAPI/components/skills/SkillProviderExample/Sleep.h
new file mode 100644
index 0000000000000000000000000000000000000000..7c5ea22434e7ed2f85085d574b6a1c708e1e99ae
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Sleep.h
@@ -0,0 +1,24 @@
+#pragma once
+
+// RobotAPI
+#include <RobotAPI/components/skills/SkillProviderExample/aron/SleepAcceptedType.aron.generated.h>
+#include <RobotAPI/libraries/skills/provider/SimpleSpecializedSkill.h>
+
+namespace armarx::skills::provider
+{
+    // Skills:
+    class Sleep : public SimpleSpecializedSkill<armarx::skills::Example::SleepAcceptedType>
+    {
+    public:
+        Sleep();
+
+        static SkillDescription GetSkillDescription();
+
+        void onStopRequested() override;
+
+    private:
+        std::atomic_bool aborted = false;
+        armarx::Duration timeout;
+        Skill::MainResult main(const SpecializedMainInput& in) final;
+    };
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/aron/SleepAcceptedType.xml b/source/RobotAPI/components/skills/SkillProviderExample/aron/SleepAcceptedType.xml
new file mode 100644
index 0000000000000000000000000000000000000000..65b0acb70e3cb910bf5fcd468c1f0a38f0a5f7dc
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/aron/SleepAcceptedType.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+	    <Object name='armarx::skills::Example::SleepAcceptedType'>
+		    <ObjectChild key='Timeout_ms'>
+			    <int32 />
+				</ObjectChild>
+				</Object>
+		</GenerateTypes>
+
+</AronTypeDefinition>