# Customization

GoReleaser can be customized by tweaking a `.goreleaser.yaml` file.

You can generate an example config by running
[`goreleaser init`](/cmd/goreleaser_init/) or start from scratch.

You can also check if your config is valid by running
[`goreleaser check`](/cmd/goreleaser_check/), which will tell you if are using
deprecated or invalid options.

## JSON Schema

GoReleaser also has a [jsonschema][] file, which you can use to have better
editor support:

=== "OSS"

    ```sh
    https://goreleaser.com/static/schema.json
    ```

    You can also specify it in your `.goreleaser.yml` config file by adding a
    comment like the following:
    ```yaml
    # yaml-language-server: $schema=https://goreleaser.com/static/schema.json
    ```

=== "Pro"

    ```sh
    https://goreleaser.com/static/schema-pro.json
    ```

    You can also specify it in your `.goreleaser.yml` config file by adding a
    comment like the following:
    ```yaml
    # yaml-language-server: $schema=https://goreleaser.com/static/schema-pro.json
    ```

You can also generate it for your specific version using the
[`goreleaser jsonschema`][schema] command.

### Pin the schema version

You can pin the version by getting the schema from the GitHub tag, for example,
for v1.12.0:

=== "OSS"

    ```sh
    https://raw.githubusercontent.com/goreleaser/goreleaser/v1.12.0/www/docs/static/schema.json
    ```

=== "Pro"

    ```sh
    https://raw.githubusercontent.com/goreleaser/goreleaser/v1.12.0/www/docs/static/schema-pro.json
    ```

[jsonschema]: http://json-schema.org/draft/2020-12/json-schema-validation.html
[schema]: /cmd/goreleaser_jsonschema/
