code: def schema_completer(prefix):
      
      from c7n import schema
      load_resources()
      components = prefix.split('.')
  
      if components[0] in provider.clouds.keys():
          cloud_provider = components.pop(0)
          provider_resources = provider.resources(cloud_provider)
      else:
          cloud_provider = 'aws'
          provider_resources = provider.resources('aws')
          components[0] = "aws.%s" % components[0]
  
      # Completions for resource
      if len(components) == 1:
          choices = [r for r in provider.resources().keys()
                     if r.startswith(components[0])]
          if len(choices) == 1:
              choices += ['{}{}'.format(choices[0], '.')]
          return choices
  
      if components[0] not in provider_resources.keys():
          return []
  
      # Completions for category
      if len(components) == 2:
          choices = ['{}.{}'.format(components[0], x)
                     for x in ('actions', 'filters') if x.startswith(components[1])]
          if len(choices) == 1:
              choices += ['{}{}'.format(choices[0], '.')]
          return choices
  
      # Completions for item
      elif len(components) == 3:
          resource_mapping = schema.resource_vocabulary(cloud_provider)
          return ['{}.{}.{}'.format(components[0], components[1], x)
                  for x in resource_mapping[components[0]][components[1]]]
  
      return []
docs: For tab-completion via argcomplete, return completion options.
  
      For the given prefix so far, return the possible options.  Note that
      filtering via startswith happens after this list is returned.