Feature object Featury 
A feature object can contain work with either one specific feature flag or several feature flags. Several feature flags can also be represented as a group — a nested feature object.
Prefix 
A feature object always has a prefix. By default, it is built based on the class name of the feature object. For example, for User::OnboardingFeature the default prefix will be user_onboarding.
You can change the prefix using the prefix method:
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  
  # ...
endResources 
A feature object may expect a resource to be passed to it as input. These resources can be used in actions as an addition to working with feature flags.
Options 
Option option 
Makes the resource optional for calling the feature object. Defaults to false.
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User, option: true
  # ...
endOption nested 
Passes a resource to nested feature objects via groups. Defaults to false.
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User, nested: true
  # ...
endCondition 
A feature object can contain a basic condition for operation. For example, this can be useful if you want to allow work with a resource only in a certain state.
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User
  condition ->(resources:) { resources.user.onboarding_awaiting? } 
  # ...
endSet of features 
Within a single feature object, you can specify one feature flag or several feature flags.
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User
  condition ->(resources:) { resources.user.onboarding_awaiting? }
  features :passage
endclass User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User
  condition ->(resources:) { resources.user.onboarding_awaiting? }
  features :passage, :integration
endTogether with the onboarding prefix, an example of which is presented above, these feature flags will be collected:
# => onboarding_passage# => onboarding_passage
# => onboarding_integrationGroups of feature sets 
class User::OnboardingFeature < ApplicationFeature
  prefix :onboarding
  resource :user, type: User
  condition ->(resources:) { resources.user.onboarding_awaiting? }
  features :passage
  groups BillingFeature, 
         PaymentSystemFeature
end