diff --git a/source/RobotAPI/libraries/skills/provider/SkillProxy.h b/source/RobotAPI/libraries/skills/provider/SkillProxy.h
index 06f034a9c789aa3b35b61b4a9a746b68c2eac471..8f0fb34be58e7d20fec5778795ead2a34ab80a3c 100644
--- a/source/RobotAPI/libraries/skills/provider/SkillProxy.h
+++ b/source/RobotAPI/libraries/skills/provider/SkillProxy.h
@@ -29,7 +29,7 @@ namespace armarx
             // Utiliy methods
             aron::data::DictPtr getDefaultParameters(const std::string& profileName = "root");
 
-        private:
+        protected:
             manager::dti::SkillManagerInterfacePrx manager;
             SkillDescription skillDescription;
         };
diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1074f549947ce61b4b96e3f698caab84a5149488
--- /dev/null
+++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.cpp
@@ -0,0 +1,8 @@
+#include "SkillProxy.h"
+
+namespace armarx
+{
+    namespace skills
+    {
+    } // namespace skills
+} // namespace armarx
diff --git a/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h
new file mode 100644
index 0000000000000000000000000000000000000000..37ecd5a7771f09f99d11c0513cdcf95fe7c5d8e0
--- /dev/null
+++ b/source/RobotAPI/libraries/skills/provider/SpecializedSkillProxy.h
@@ -0,0 +1,41 @@
+#pragma once
+
+#include "SkillProxy.h"
+
+namespace armarx
+{
+    namespace skills
+    {
+        template <class AronT>
+        class SpecializedSkillProxy : public SkillProxy
+        {
+        public:
+            using SkillProxy::SkillProxy;
+
+            // Provide a similar API as the skillprovider
+            TerminatedSkillStatusUpdate
+            executeSkill(const std::string& executorName, const AronT& params)
+            {
+                return SkillProxy::executeSkill(executorName, params.toAron());
+            }
+
+            SkillExecutionID
+            executeSkillAsync(const std::string& executorName, const AronT& params = nullptr)
+            {
+                return SkillProxy::executeSkillAsync(executorName, params.toAron());
+            }
+
+            // Utiliy methods
+            AronT
+            getDefaultParameters(const std::string& profileName = "root")
+            {
+                auto dict = SkillProxy::getDefaultParameters(profileName);
+                if (dict)
+                {
+                    return AronT::FromAron(dict);
+                }
+                return {};
+            }
+        };
+    } // namespace skills
+} // namespace armarx