diff --git a/app/models/concerns/limitable.rb b/app/models/concerns/limitable.rb
index 7ed7f65ca570f4687161c162feddf63e15a5e719..3de2cd7fbf0c43fd8658198ce697eb837aeb76de 100644
--- a/app/models/concerns/limitable.rb
+++ b/app/models/concerns/limitable.rb
@@ -40,8 +40,10 @@ def fetch_plan_limit_data
   def scoped_plan_limits
     scope_relation = self.public_send(limit_scope) # rubocop:disable GitlabSecurity/PublicSend
     return unless scope_relation
-    return if limit_feature_flag && ::Feature.disabled?(limit_feature_flag, scope_relation)
-    return if limit_feature_flag_for_override && ::Feature.enabled?(limit_feature_flag_for_override, scope_relation)
+    return if limit_feature_flag && ::Feature.disabled?(limit_feature_flag, scope_relation, type: :undefined)
+
+    return if limit_feature_flag_for_override &&
+      ::Feature.enabled?(limit_feature_flag_for_override, scope_relation, type: :undefined)
 
     relation = limit_relation ? self.public_send(limit_relation) : self.class.where(limit_scope => scope_relation) # rubocop:disable GitlabSecurity/PublicSend
     limits = scope_relation.actual_limits
diff --git a/app/models/concerns/routable.rb b/app/models/concerns/routable.rb
index 43874d0211c79ad5897a95d598dde12803ec948c..c78d0665b42c2a59f0a48427a2310999b1d5bce7 100644
--- a/app/models/concerns/routable.rb
+++ b/app/models/concerns/routable.rb
@@ -155,7 +155,7 @@ def full_attribute(attribute)
       route&.public_send(attribute) || send("build_full_#{attribute}")
     end
 
-    unless persisted? && Feature.enabled?(:cached_route_lookups, self, type: :ops)
+    unless persisted? && Feature.enabled?(:cached_route_lookups, self)
       return attribute_from_route_or_self.call(attribute)
     end
 
diff --git a/app/workers/concerns/worker_attributes.rb b/app/workers/concerns/worker_attributes.rb
index a1c5039dc22e8fae3362ba83ca1371b72ee1aa77..03f0c39d801d4cf2cfd44c53db1ae6e8841902d6 100644
--- a/app/workers/concerns/worker_attributes.rb
+++ b/app/workers/concerns/worker_attributes.rb
@@ -111,7 +111,7 @@ def get_data_consistency
     def get_data_consistency_feature_flag_enabled?
       return true unless get_class_attribute(:data_consistency_feature_flag)
 
-      Feature.enabled?(get_class_attribute(:data_consistency_feature_flag))
+      Feature.enabled?(get_class_attribute(:data_consistency_feature_flag), type: :worker)
     end
 
     # Set this attribute on a job when it will call to services outside of the
@@ -197,7 +197,7 @@ def get_deduplication_options
     def deduplication_enabled?
       return true unless get_deduplication_options[:feature_flag]
 
-      Feature.enabled?(get_deduplication_options[:feature_flag])
+      Feature.enabled?(get_deduplication_options[:feature_flag], type: :worker)
     end
 
     def big_payload!
diff --git a/config/feature_flags/development/deduplicate_process_commit_worker.yml b/config/feature_flags/worker/deduplicate_process_commit_worker.yml
similarity index 93%
rename from config/feature_flags/development/deduplicate_process_commit_worker.yml
rename to config/feature_flags/worker/deduplicate_process_commit_worker.yml
index 6c70b53c25c50c4c73019f72699c31cf7f78a3b9..e92086557a575b55adfca3dd06830d444309d7ef 100644
--- a/config/feature_flags/development/deduplicate_process_commit_worker.yml
+++ b/config/feature_flags/worker/deduplicate_process_commit_worker.yml
@@ -3,6 +3,6 @@ name: deduplicate_process_commit_worker
 introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/128233
 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/420750
 milestone: '16.3'
-type: development
+type: worker
 group: group::source code
 default_enabled: false
diff --git a/ee/spec/lib/ee/feature_spec.rb b/ee/spec/lib/ee/feature_spec.rb
index 8f164a820da183ebd0890bd04cc130049d08c006..82049c0812dd3e4b02de889e502d7e099d6b5a7a 100644
--- a/ee/spec/lib/ee/feature_spec.rb
+++ b/ee/spec/lib/ee/feature_spec.rb
@@ -19,7 +19,6 @@
   describe '.enabled?' do
     before do
       described_class.reset
-      skip_feature_flags_yaml_validation
       allow(described_class).to receive(:log_feature_flag_states?).and_return(false)
 
       stub_feature_flag_definition(:disabled_feature_flag)
diff --git a/ee/spec/requests/api/features_spec.rb b/ee/spec/requests/api/features_spec.rb
index f3dfe624f70ec452849052ad6df5c1a6f5ca7582..e45379821fe910672ef0d8859cb9831b0e3f84dc 100644
--- a/ee/spec/requests/api/features_spec.rb
+++ b/ee/spec/requests/api/features_spec.rb
@@ -15,8 +15,6 @@
     Flipper.register(:perf_team) do |actor|
       actor.respond_to?(:admin) && actor.admin?
     end
-
-    skip_feature_flags_yaml_validation
   end
 
   describe 'POST /feature' do
diff --git a/lib/feature.rb b/lib/feature.rb
index 4b3ebab6dce3dafed9d475a5828d8f79f2cac1fa..528d70355b23c2ea10825c60338b67f261fe2ed0 100644
--- a/lib/feature.rb
+++ b/lib/feature.rb
@@ -121,7 +121,7 @@ def persisted_name?(feature_name)
     #    in production environment, but raise exception in development or tests.
     # 2. The `default_enabled_if_undefined:` is tech debt related to Gitaly flags
     #    and should not be used outside of Gitaly's `lib/feature/gitaly.rb`
-    def enabled?(key, thing = nil, type: :development, default_enabled_if_undefined: nil)
+    def enabled?(key, thing = nil, type: nil, default_enabled_if_undefined: nil)
       thing = sanitized_thing(thing)
 
       check_feature_flags_definition!(key, thing, type)
@@ -138,7 +138,7 @@ def enabled?(key, thing = nil, type: :development, default_enabled_if_undefined:
       feature_value
     end
 
-    def disabled?(key, thing = nil, type: :development, default_enabled_if_undefined: nil)
+    def disabled?(key, thing = nil, type: nil, default_enabled_if_undefined: nil)
       thing = sanitized_thing(thing)
 
       # we need to make different method calls to make it easy to mock / define expectations in test mode
diff --git a/lib/feature/definition.rb b/lib/feature/definition.rb
index 14848f22f833749b5f0ceee148939eb94ca7fd61..d48d4f45ebb6774458df8c6ef5258066585e9541 100644
--- a/lib/feature/definition.rb
+++ b/lib/feature/definition.rb
@@ -74,10 +74,13 @@ def validate_default_enabled!
     end
 
     def valid_usage!(type_in_code:)
-      unless Array(type).include?(type_in_code.to_s)
+      return if type_in_code.nil?
+
+      if type != type_in_code.to_s
         # Raise exception in test and dev
-        raise Feature::InvalidFeatureFlagError, "The `type:` of `#{key}` is not equal to config: " \
-          "#{type_in_code} vs #{type}. Ensure to use valid type in #{path} or ensure that you use " \
+        raise Feature::InvalidFeatureFlagError,
+          "The given `type: :#{type_in_code}` for `#{key}` is not equal to the " \
+          ":#{type} set in its definition file. Ensure to use a valid type in #{path} or ensure that you use " \
           "a valid syntax: #{TYPES.dig(type, :example)}"
       end
     end
@@ -122,7 +125,7 @@ def has_definition?(key)
 
       def log_states?(key)
         return false if key == :feature_flag_state_logs
-        return false if Feature.disabled?(:feature_flag_state_logs, type: :ops)
+        return false if Feature.disabled?(:feature_flag_state_logs)
         return false unless (feature = get(key))
 
         feature.force_log_state_changes? || feature.for_upcoming_milestone?
@@ -131,6 +134,8 @@ def log_states?(key)
       def valid_usage!(key, type:)
         if definition = get(key)
           definition.valid_usage!(type_in_code: type)
+        elsif type.nil?
+          raise InvalidFeatureFlagError, "Missing type for undefined feature `#{key}`"
         elsif type_definition = self::TYPES[type]
           raise InvalidFeatureFlagError, "Missing feature definition for `#{key}`" unless type_definition[:optional]
         else
diff --git a/lib/gitlab/lograge/custom_options.rb b/lib/gitlab/lograge/custom_options.rb
index 6f180f89db046ad7d9bd0c1177753b480e109ff0..c52228c9455ac31fff44fe5f6456391b35c210fb 100644
--- a/lib/gitlab/lograge/custom_options.rb
+++ b/lib/gitlab/lograge/custom_options.rb
@@ -32,7 +32,7 @@ def self.call(event)
 
         ::Gitlab::ExceptionLogFormatter.format!(exception, payload)
 
-        if Feature.enabled?(:feature_flag_state_logs, type: :ops)
+        if Feature.enabled?(:feature_flag_state_logs)
           payload[:feature_flag_states] = Feature.logged_states.map { |key, state| "#{key}:#{state ? 1 : 0}" }
         end
 
diff --git a/lib/gitlab/redis/multi_store.rb b/lib/gitlab/redis/multi_store.rb
index 6d8ccf718b4e767098d3c6c9826aed846567d5b6..e6262f7f61b516ec17e3f25316d47c8d6d97d42b 100644
--- a/lib/gitlab/redis/multi_store.rb
+++ b/lib/gitlab/redis/multi_store.rb
@@ -252,17 +252,28 @@ def to_s
       end
 
       def use_primary_and_secondary_stores?
+        feature_flag = "use_primary_and_secondary_stores_for_#{instance_name.underscore}"
+
         feature_table_exists? &&
-          Feature.enabled?("use_primary_and_secondary_stores_for_#{instance_name.underscore}") && # rubocop:disable Cop/FeatureFlagUsage
+          Feature.enabled?(feature_flag, type: feature_flag_type(feature_flag)) && # rubocop:disable Cop/FeatureFlagUsage -- The flags are dynamic
           !same_redis_store?
       end
 
       def use_primary_store_as_default?
+        feature_flag = "use_primary_store_as_default_for_#{instance_name.underscore}"
+
         feature_table_exists? &&
-          Feature.enabled?("use_primary_store_as_default_for_#{instance_name.underscore}") && # rubocop:disable Cop/FeatureFlagUsage
+          Feature.enabled?(feature_flag, type: feature_flag_type(feature_flag)) && # rubocop:disable Cop/FeatureFlagUsage -- The flags are dynamic
           !same_redis_store?
       end
 
+      def feature_flag_type(feature_flag)
+        feature_definition = Feature::Definition.get(feature_flag)
+        return if feature_definition
+
+        :undefined
+      end
+
       def increment_pipelined_command_error_count(command_name)
         @pipelined_command_error ||= Gitlab::Metrics.counter(:gitlab_redis_multi_store_pipelined_diff_error_total,
                                                              'Redis MultiStore pipelined command diff between stores')
diff --git a/spec/lib/feature/definition_spec.rb b/spec/lib/feature/definition_spec.rb
index b75c780a33e2d07c23daf24f4f5ce346434dd84b..c68b37ce4f3aa81e2960a57e92363a382fafacd0 100644
--- a/spec/lib/feature/definition_spec.rb
+++ b/spec/lib/feature/definition_spec.rb
@@ -55,11 +55,11 @@
   end
 
   describe '#valid_usage!' do
-    context 'validates type' do
-      it 'raises exception for invalid type' do
-        expect { definition.valid_usage!(type_in_code: :invalid) }
-          .to raise_error(/The `type:` of `feature_flag` is not equal to config/)
-      end
+    it 'raises exception for invalid type' do
+      expect { definition.valid_usage!(type_in_code: :invalid) }
+        .to raise_error(
+          /The given `type: :invalid` for `feature_flag` is not equal to the :development set in its definition file./
+        )
     end
   end
 
diff --git a/spec/lib/feature/gitaly_spec.rb b/spec/lib/feature/gitaly_spec.rb
index 336962904832d5117f756a3ca9e95bb1b64480c1..dacd1fcb212b1f2be8128e07e053d1a57e1cbc21 100644
--- a/spec/lib/feature/gitaly_spec.rb
+++ b/spec/lib/feature/gitaly_spec.rb
@@ -10,9 +10,9 @@
   let_it_be(:repository_2) { project_2.repository.raw }
 
   before do
-    skip_feature_flags_yaml_validation
-    allow(Feature::Definition).to receive(:get).with(any_args).and_return(
-      Feature::Definition.new('flag.yml', name: :flag, type: :development)
+    allow(Feature::Definition).to receive(:get).and_call_original
+    allow(Feature::Definition).to receive(:get).with(:flag).and_return(
+      Feature::Definition.new('flag.yml', name: :flag, type: :undefined)
     )
   end
 
diff --git a/spec/lib/feature_spec.rb b/spec/lib/feature_spec.rb
index 64c249770b7a168abffaf1e672269d3df452142c..36856403d5dd9d92397dfdb3f6fe1ee86194b9c0 100644
--- a/spec/lib/feature_spec.rb
+++ b/spec/lib/feature_spec.rb
@@ -27,7 +27,6 @@ def wrap_all_methods_with_flag_check(lb, flag)
 
       # reset Flipper AR-engine
       Feature.reset
-      skip_feature_flags_yaml_validation
     end
 
     describe '.current_request' do
@@ -253,15 +252,15 @@ def wrap_all_methods_with_flag_check(lb, flag)
       it 'returns false (and tracks / raises exception for dev) for undefined feature' do
         expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
 
-        expect(described_class.enabled?(:some_random_feature_flag)).to be_falsey
+        expect(described_class.enabled?(:some_random_feature_fla, type: :undefined)).to be_falsey
       end
 
       it 'returns false for undefined feature with default_enabled_if_undefined: false' do
-        expect(described_class.enabled?(:some_random_feature_flag, default_enabled_if_undefined: false)).to be_falsey
+        expect(described_class.enabled?(:some_random_feature_flag, type: :undefined, default_enabled_if_undefined: false)).to be_falsey
       end
 
       it 'returns true for undefined feature with default_enabled_if_undefined: true' do
-        expect(described_class.enabled?(:some_random_feature_flag, default_enabled_if_undefined: true)).to be_truthy
+        expect(described_class.enabled?(:some_random_feature_flag, type: :undefined, default_enabled_if_undefined: true)).to be_truthy
       end
 
       it 'returns false for existing disabled feature in the database' do
@@ -307,7 +306,7 @@ def wrap_all_methods_with_flag_check(lb, flag)
         base_class = Feature::BypassLoadBalancer.enabled? ? Feature::BypassLoadBalancer::FlipperRecord : ActiveRecord::Base
         expect(base_class).to receive(:connection) { raise ActiveRecord::NoDatabaseError, "No database" }
 
-        expect(described_class.enabled?(:a_feature, default_enabled_if_undefined: fake_default)).to eq(fake_default)
+        expect(described_class.enabled?(:a_feature, type: :undefined, default_enabled_if_undefined: fake_default)).to eq(fake_default)
       end
 
       context 'logging is enabled', :request_store do
@@ -497,7 +496,7 @@ def wrap_all_methods_with_flag_check(lb, flag)
 
         it 'when invalid type is used' do
           expect { described_class.enabled?(:my_feature_flag, type: :ops) }
-            .to raise_error(/The `type:` of/)
+            .to raise_error(/The given `type: :ops`/)
         end
 
         context 'when default_enabled: is false in the YAML definition' do
@@ -581,19 +580,19 @@ def wrap_all_methods_with_flag_check(lb, flag)
       end
     end
 
-    describe '.disable?' do
+    describe '.disabled?' do
       it 'returns true (and tracks / raises exception for dev) for undefined feature' do
         expect(Gitlab::ErrorTracking).to receive(:track_and_raise_for_dev_exception)
 
-        expect(described_class.disabled?(:some_random_feature_flag)).to be_truthy
+        expect(described_class.disabled?(:some_random_feature_flag, type: :undefined)).to be_truthy
       end
 
       it 'returns true for undefined feature with default_enabled_if_undefined: false' do
-        expect(described_class.disabled?(:some_random_feature_flag, default_enabled_if_undefined: false)).to be_truthy
+        expect(described_class.disabled?(:some_random_feature_flag, type: :undefined, default_enabled_if_undefined: false)).to be_truthy
       end
 
       it 'returns false for undefined feature with default_enabled_if_undefined: true' do
-        expect(described_class.disabled?(:some_random_feature_flag, default_enabled_if_undefined: true)).to be_falsey
+        expect(described_class.disabled?(:some_random_feature_flag, type: :undefined, default_enabled_if_undefined: true)).to be_falsey
       end
 
       it 'returns true for existing disabled feature in the database' do
diff --git a/spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb b/spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb
index 5a52394742f430383a7e78555650b9825b818ffe..397db793d9ca4f6f86ccf49ce4ca1fbd9548d4f7 100644
--- a/spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb
+++ b/spec/lib/gitlab/database/load_balancing/sidekiq_client_middleware_spec.rb
@@ -9,7 +9,6 @@
   let(:job) { { "job_id" => "a180b47c-3fd6-41b8-81e9-34da61c3400e" } }
 
   before do
-    skip_feature_flags_yaml_validation
     skip_default_enabled_yaml_check
   end
 
diff --git a/spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb b/spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb
index aaca544ef8051389a346df897770a7a452d5e4fd..e25149217d6ea94f4a6af84c9946dc0dd847fbd6 100644
--- a/spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb
+++ b/spec/lib/gitlab/database/load_balancing/sidekiq_server_middleware_spec.rb
@@ -13,7 +13,6 @@
   let(:none_caught_up) { Gitlab::Database::LoadBalancing::LoadBalancer::NONE_CAUGHT_UP }
 
   before do
-    skip_feature_flags_yaml_validation
     skip_default_enabled_yaml_check
 
     replication_lag!(false)
diff --git a/spec/lib/gitlab/gon_helper_spec.rb b/spec/lib/gitlab/gon_helper_spec.rb
index e167699e1d0861142e48dec53525652697d918ae..ba250c499a31ccd5b0dac59f38f6c04c4622e869 100644
--- a/spec/lib/gitlab/gon_helper_spec.rb
+++ b/spec/lib/gitlab/gon_helper_spec.rb
@@ -125,7 +125,6 @@
 
   describe '#push_frontend_feature_flag' do
     before do
-      skip_feature_flags_yaml_validation
       skip_default_enabled_yaml_check
     end
 
@@ -152,8 +151,6 @@
     let(:gon) { class_double('Gon') }
 
     before do
-      skip_feature_flags_yaml_validation
-
       allow(helper)
         .to receive(:gon)
         .and_return(gon)
diff --git a/spec/lib/gitlab/redis/cluster_util_spec.rb b/spec/lib/gitlab/redis/cluster_util_spec.rb
index f167065fd3f74b4f6a628e3b550701a6d00596e4..a517545014508012798a37abb3df9013367ff9ad 100644
--- a/spec/lib/gitlab/redis/cluster_util_spec.rb
+++ b/spec/lib/gitlab/redis/cluster_util_spec.rb
@@ -23,7 +23,6 @@
         allow(redis_cluster).to receive(:id).and_return(1)
 
         allow(Gitlab::Redis::MultiStore).to receive(:same_redis_store?).and_return(false)
-        skip_feature_flags_yaml_validation
         skip_default_enabled_yaml_check
       end
 
diff --git a/spec/lib/gitlab/redis/cross_slot_spec.rb b/spec/lib/gitlab/redis/cross_slot_spec.rb
index ccf2de1f28f5f2652273049eaaa8fa127f60ccc6..4e9830f4110a2bcc6bfb9e2dd8e314725c7071c3 100644
--- a/spec/lib/gitlab/redis/cross_slot_spec.rb
+++ b/spec/lib/gitlab/redis/cross_slot_spec.rb
@@ -45,7 +45,6 @@
       before do
         primary_store.set('a', 1)
         secondary_store.set('a', 1)
-        skip_feature_flags_yaml_validation
         skip_default_enabled_yaml_check
       end
 
diff --git a/spec/lib/gitlab/redis/multi_store_spec.rb b/spec/lib/gitlab/redis/multi_store_spec.rb
index c3705f6bb54d3745eeea19e9c7d22648591f1fdd..348215d553c03e1b141c75396e0026fc1131fb64 100644
--- a/spec/lib/gitlab/redis/multi_store_spec.rb
+++ b/spec/lib/gitlab/redis/multi_store_spec.rb
@@ -22,7 +22,6 @@
   end
 
   before do
-    skip_feature_flags_yaml_validation
     skip_default_enabled_yaml_check
   end
 
diff --git a/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb b/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb
index 5724c58f1a4cb00a20e8ad4455cdcef747ceafb5..a1421a46490315c3c1cf091d184dc0711b56ae25 100644
--- a/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb
+++ b/spec/lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job_spec.rb
@@ -42,7 +42,6 @@
 
     context 'when the deduplication depends on a FF' do
       before do
-        skip_feature_flags_yaml_validation
         skip_default_enabled_yaml_check
 
         allow(AuthorizedProjectsWorker).to receive(:get_deduplication_options).and_return(feature_flag: :my_feature_flag)
diff --git a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
index 74b6a4e9c88c8fc9af49efbaf15ad8ee92beaf80..9b039ef1c344018f24c3fdb7d3a44d2e71e80971 100644
--- a/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
+++ b/spec/lib/gitlab/usage_data_counters/hll_redis_counter_spec.rb
@@ -90,7 +90,6 @@
     end
 
     before do
-      skip_feature_flags_yaml_validation
       skip_default_enabled_yaml_check
       allow(described_class).to receive(:known_events).and_return(known_events)
     end
diff --git a/spec/models/concerns/limitable_spec.rb b/spec/models/concerns/limitable_spec.rb
index c0a6aea2075c931c0e27f0f102351c11e4bb160d..1a28c23158080c627f88301c5bba7ba129956128 100644
--- a/spec/models/concerns/limitable_spec.rb
+++ b/spec/models/concerns/limitable_spec.rb
@@ -59,7 +59,6 @@ def instance.project
 
           stub_feature_flags("#{limit_feature_flag}": limit_feature_flag_value ? [instance.project] : false) if limit_feature_flag
           stub_feature_flags("#{limit_feature_flag_for_override}": limit_feature_flag_override_value ? [instance.project] : false) if limit_feature_flag_for_override
-          skip_feature_flags_yaml_validation
           skip_default_enabled_yaml_check
 
           MinimalTestClass.limit_relation = :custom_relation
diff --git a/spec/requests/api/features_spec.rb b/spec/requests/api/features_spec.rb
index d922947f3e949def6cb253e38f1f61073c4a2ec1..3fb05aed6ccaac4cc1ecbacedc84f4a463ac2719 100644
--- a/spec/requests/api/features_spec.rb
+++ b/spec/requests/api/features_spec.rb
@@ -26,7 +26,6 @@
       actor.respond_to?(:admin) && actor.admin?
     end
 
-    skip_feature_flags_yaml_validation
     skip_default_enabled_yaml_check
   end
 
@@ -748,7 +747,7 @@
             delete api("/features/#{feature_name}", admin, admin_mode: true)
             Feature.reset
           end.to change { Feature.persisted_name?(feature_name) }
-            .and change { Feature.enabled?(feature_name) }
+            .and change { Feature.enabled?(feature_name, type: :undefined) }
 
           expect(response).to have_gitlab_http_status(:no_content)
         end
diff --git a/spec/requests/api/usage_data_spec.rb b/spec/requests/api/usage_data_spec.rb
index a2b2b0c6f4a2213629e98a307c934b3ac7cfc612..ecade80c2fa218e478a4d82fb98935b9ad64804e 100644
--- a/spec/requests/api/usage_data_spec.rb
+++ b/spec/requests/api/usage_data_spec.rb
@@ -137,7 +137,6 @@
 
       context 'with unknown event' do
         before do
-          skip_feature_flags_yaml_validation
           skip_default_enabled_yaml_check
         end
 
@@ -214,10 +213,6 @@
       end
 
       context 'with unknown event' do
-        before do
-          skip_feature_flags_yaml_validation
-        end
-
         it 'returns status ok' do
           expect(Gitlab::Redis::HLL).not_to receive(:add)
 
diff --git a/spec/support/helpers/stub_feature_flags.rb b/spec/support/helpers/stub_feature_flags.rb
index 76fc8ebf84dd1570cf146813f426fbdce0c18580..ded475daabd916d0a5d31836a88da07e97a30609 100644
--- a/spec/support/helpers/stub_feature_flags.rb
+++ b/spec/support/helpers/stub_feature_flags.rb
@@ -77,10 +77,6 @@ def stub_feature_flag_gate(object)
     StubFeatureGate.new(object)
   end
 
-  def skip_feature_flags_yaml_validation
-    allow(Feature::Definition).to receive(:valid_usage!)
-  end
-
   def skip_default_enabled_yaml_check
     allow(Feature::Definition).to receive(:default_enabled?).and_return(false)
   end
diff --git a/spec/workers/concerns/worker_attributes_spec.rb b/spec/workers/concerns/worker_attributes_spec.rb
index 1c9d9a5a1ad4fe903dc99e2dcd84d336cf62d055..33ff724d3f6494d295851f001e88cf63ace239fe 100644
--- a/spec/workers/concerns/worker_attributes_spec.rb
+++ b/spec/workers/concerns/worker_attributes_spec.rb
@@ -84,7 +84,6 @@ def self.name
     context 'when feature_flag is provided' do
       before do
         stub_feature_flags(test_feature_flag: false)
-        skip_feature_flags_yaml_validation
         skip_default_enabled_yaml_check
       end
 
@@ -113,7 +112,6 @@ def self.name
 
     context 'when feature flag is set' do
       before do
-        skip_feature_flags_yaml_validation
         skip_default_enabled_yaml_check
 
         worker.deduplicate(:until_executing, feature_flag: :my_feature_flag)