diff --git a/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.cpp b/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..cf93b5f6e54585d3a7131f3e556325987fb78a26
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.cpp
@@ -0,0 +1,32 @@
+#include "BusyWaiting.h"
+
+#include <chrono>
+#include <thread>
+
+namespace armarx::skills::provider
+{
+
+    BusyWaiting::BusyWaiting() : SimpleSkill(GetSkillDescription())
+    {
+    }
+
+    SkillDescription
+    BusyWaiting::GetSkillDescription()
+    {
+        return SkillDescription{.skillId = SkillID{.skillName = "BusyWaiting"},
+                                .description = "This skill takes two seconds",
+                                .timeout = armarx::core::time::Duration::MilliSeconds(10000)};
+    }
+
+    Skill::MainResult
+    BusyWaiting::main(const MainInput& in)
+    {
+        for (unsigned int i = 0; i < 10; i++)
+        {
+            throwIfSkillShouldTerminate();
+            std::this_thread::sleep_for(std::chrono::milliseconds(200));
+        }
+
+        return {TerminatedSkillStatus::Succeeded, nullptr};
+    }
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.h b/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.h
new file mode 100644
index 0000000000000000000000000000000000000000..5a8094e5b234163b77c530575fdb71e86d3ce097
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/BusyWaiting.h
@@ -0,0 +1,42 @@
+
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author     Andre Meixner ( andre dot meixner at kit dot edu )
+ * @date       2024
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+
+// RobotAPI
+#include <RobotAPI/libraries/skills/provider/SimpleSkill.h>
+
+namespace armarx::skills::provider
+{
+
+    class BusyWaiting : public SimpleSkill
+    {
+    public:
+        BusyWaiting();
+
+        static SkillDescription GetSkillDescription();
+
+    private:
+        Skill::MainResult main(const MainInput&) final;
+    };
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
index 97da6c47a9f37939a9819fe1bb40952f7dd1acde..fbebe63f4288a73b4a445d98769020f68830225d 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
+++ b/source/RobotAPI/components/skills/SkillProviderExample/CMakeLists.txt
@@ -21,6 +21,8 @@ set(SOURCES
     Segfault.cpp
     RandomChaining.cpp
     InstantKill.cpp
+    BusyWaiting.cpp
+    Recursive.cpp
 )
 
 set(HEADERS
@@ -33,6 +35,8 @@ set(HEADERS
     Segfault.h
     RandomChaining.h
     InstantKill.h
+    BusyWaiting.h
+    Recursive.h
 )
 
 armarx_add_component("${SOURCES}" "${HEADERS}")
@@ -42,6 +46,7 @@ armarx_enable_aron_file_generation_for_target(
         ${ARMARX_COMPONENT_NAME}
     ARON_FILES
         aron/HelloWorldAcceptedType.xml
+        aron/RecursiveSkillParams.xml
 )
 
 #generate the application
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/RandomChaining.cpp b/source/RobotAPI/components/skills/SkillProviderExample/RandomChaining.cpp
index b48462eef6eb8416b97574d508a1a7b9e235bbda..28d1f23ed16f5a4e50119a319f3e50206f030454 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/RandomChaining.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/RandomChaining.cpp
@@ -33,7 +33,7 @@ namespace armarx::skills::provider
     Skill::MainResult
     RandomChainingSkill::main(const MainInput& in)
     {
-      std::vector<std::string> subskillNames = {"Timeout", "ChainingSkill", "Foo", "HelloWorld", "IncompleteSkill", "ShowMeCallbacks"};
+      std::vector<std::string> subskillNames = {"Timeout", "ChainingSkill", "Foo", "HelloWorld", "IncompleteSkill", "ShowMeCallbacks", "BusyWaiting", "Recursive"};
 
       ARMARX_CHECK(subskillNames.size() > 0);
 
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Recursive.cpp b/source/RobotAPI/components/skills/SkillProviderExample/Recursive.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f2266cc4098142fef8c147a78ef0e383b8522ed6
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Recursive.cpp
@@ -0,0 +1,48 @@
+#include "Recursive.h"
+#include "RobotAPI/libraries/skills/core/SkillDescription.h"
+
+namespace armarx::skills::provider
+{
+
+    Recursive::Recursive() : SimpleSpecializedSkill<skills::Example::RecursiveSkillParams>(GetSkillDescription())
+    {
+    }
+
+    SkillDescription
+    Recursive::GetSkillDescription()
+    {
+        armarx::skills::Example::RecursiveSkillParams root_profile_params;
+        root_profile_params.n = 10;
+
+        return SkillDescription{.skillId = skills::SkillID{.skillName = "Recursive"},
+                                .description = "This skill calls itself recursively {n} times",
+                                .rootProfileDefaults = root_profile_params.toAron(),
+                                .timeout = armarx::core::time::Duration::MilliSeconds(10000),
+                                .parametersType =
+                                    armarx::skills::Example::RecursiveSkillParams::ToAronType(),
+                                .resultType = armarx::skills::Example::RecursiveSkillParams::ToAronType()};
+    }
+
+    Skill::MainResult
+    Recursive::main(const SpecializedMainInput& in)
+    {
+        const int n = in.parameters.n;
+
+        if (n > 0)
+        {
+            SkillProxy prx(manager,
+                           skills::SkillID{.providerId = *getSkillId().providerId, .skillName = "Recursive"});
+
+            armarx::skills::Example::RecursiveSkillParams params;
+            params.n = n - 1;
+
+            std::this_thread::sleep_for(std::chrono::milliseconds(100));
+
+            callSubskill(prx, params.toAron());
+        }
+
+        throwIfSkillShouldTerminate();
+
+        return {TerminatedSkillStatus::Succeeded, nullptr};
+    }
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/Recursive.h b/source/RobotAPI/components/skills/SkillProviderExample/Recursive.h
new file mode 100644
index 0000000000000000000000000000000000000000..a6c03497a98b51655f4f6e88bc1aca589c196844
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/Recursive.h
@@ -0,0 +1,42 @@
+
+/*
+ * This file is part of ArmarX.
+ *
+ * ArmarX is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * ArmarX is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * @author     Andre Meixner ( andre dot meixner at kit dot edu )
+ * @date       2024
+ * @copyright  http://www.gnu.org/licenses/gpl-2.0.txt
+ *             GNU General Public License
+ */
+
+#pragma once
+
+// RobotAPI
+#include <RobotAPI/libraries/skills/provider/SimpleSpecializedSkill.h>
+
+#include <RobotAPI/components/skills/SkillProviderExample/aron/RecursiveSkillParams.aron.generated.h>
+
+namespace armarx::skills::provider
+{
+    class Recursive : public SimpleSpecializedSkill<skills::Example::RecursiveSkillParams>
+    {
+    public:
+        Recursive();
+
+        static SkillDescription GetSkillDescription();
+
+    private:
+        Skill::MainResult main(const SpecializedMainInput&) final;
+    };
+} // namespace armarx::skills::provider
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
index 0ee70319bef8464ec9c282db98602becf78f61fb..3d324e7dd122eb99a414c72fbc9f87b90effba57 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.cpp
@@ -69,6 +69,12 @@ namespace armarx::skills::provider
         // insta kill
         ARMARX_INFO << "Adding skill InstaKill";
         addSkillFactory<InstantKillSkill>();
+
+        ARMARX_INFO << "Adding skill BusyWaiting";
+        addSkillFactory<BusyWaiting>();
+
+        ARMARX_INFO << "Adding skill Recursive";
+        addSkillFactory<Recursive>();
     }
 
     void
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
index 43357844d5418141ba44bf61ce07787bdc6d9a1b..63168c11da2be2a36eb6a0a911dab85d9cf1ae01 100644
--- a/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
+++ b/source/RobotAPI/components/skills/SkillProviderExample/SkillProviderExample.h
@@ -37,6 +37,8 @@
 #include "Timeout.h"
 #include "RandomChaining.h"
 #include "InstantKill.h"
+#include "BusyWaiting.h"
+#include "Recursive.h"
 
 namespace armarx::skills::provider
 {
diff --git a/source/RobotAPI/components/skills/SkillProviderExample/aron/RecursiveSkillParams.xml b/source/RobotAPI/components/skills/SkillProviderExample/aron/RecursiveSkillParams.xml
new file mode 100644
index 0000000000000000000000000000000000000000..47d69a1b7f090a8ac43adf8ebc3df266a56adf8b
--- /dev/null
+++ b/source/RobotAPI/components/skills/SkillProviderExample/aron/RecursiveSkillParams.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<AronTypeDefinition>
+    <GenerateTypes>
+        <Object name='armarx::skills::Example::RecursiveSkillParams'>
+            <ObjectChild key='n'>
+                <int32 />
+            </ObjectChild>
+        </Object>
+    </GenerateTypes>
+
+</AronTypeDefinition>
\ No newline at end of file