def METHOD_NAME(f, schema, output=None, skip_lines=0, **kwargs):
    """
    Convert a fixed-width file to csv using a CSV-formatted schema description.
    A schema CSV must start with a header row with (at least) columns labeled
    "column","start", and "length". (Other columns will be ignored.) For each
    subsequent row, therefore, those columns will be used to identify a column
    name, the starting index of the column (an integer), and the length of the
    column (also an integer).
    Values in the 'start' column are assumed to be zero-based, unless the first
    value for 'start' is 1, in which case all values are assumed to be
    one-based.
    If output is specified, rows will be written to that object, otherwise the
    complete data will be returned.
    :param skip_lines:
        The number of lines to skip from the top of the file.
    """
    streaming = bool(output)
    if not streaming:
        output = StringIO()
    try:
        encoding = kwargs['encoding']
    except KeyError:
        encoding = None
    if isinstance(skip_lines, int):
        while skip_lines > 0:
            f.readline()
            skip_lines -= 1
    else:
        raise ValueError('skip_lines argument must be an int')
    writer = agate.csv.writer(output)
    reader = FixedWidthReader(f, schema, encoding=encoding)
    writer.writerows(reader)
    if not streaming:
        data = output.getvalue()
        output.close()
        return data
    # Return empty string when streaming
    return ''