code: func (r *RuleSet) ConfigPatterns(c context.Context) ([]*ConfigPattern, error) {
  	r.l.RLock()
  	defer r.l.RUnlock()
  
  	out := make([]*ConfigPattern, len(r.r))
  	for i, rule := range r.r {
  		var err error
  		if out[i], err = r.renderedConfigPattern(c, rule); err != nil {
  			return nil, err
  		}
  	}
  
  	return out, nil
  }
docs: // ConfigPatterns renders all registered config patterns and returns them.
  //
  // Used by the metadata handler to notify the config service about config files
  // we understand.