# Configuration ReleaseKit reads a JSON profile from `/releasekit.json` by default. The repository directory defaults to the current directory. A relative profile path is resolved from that repository directory; an absolute path is used as-is. The current profile fields are: | Field | Required | Behavior | | --- | --- | --- | | `product` | Yes | Product name used by release operations. | | `remote` | No | Selected Git remote; defaults to `origin`. | | `checks` | No | Ordered additional child commands, each with an argument vector and optional environment map. | | `build` | No | Optional main package, binary name, and selected `GOOS/GOARCH` target strings. | | `delivery` | No | Optional Gitea `base_url`, `owner`, `repository`, and `token_env` settings for tagged-source delivery. | Each check requires a nonempty `args` array whose first element names the executable. Arguments are passed directly to the child process; ReleaseKit does not parse a shell command string. Select a shell explicitly when a check needs shell syntax. Each `env` map overlays the current environment for that child. The overlay does not modify the ReleaseKit process environment. Unknown fields are rejected so a setting cannot be silently ignored. The `build` object contains `main_package`, `binary_name`, and `targets`. A selected target requires the package and binary name; each target is written as one `GOOS/GOARCH` pair. An omitted or empty target list means no binary work. The `delivery` object contains `base_url`, `owner`, `repository`, and optional `token_env`. Its values are required when running `deliver`, but credentials are not required for `check`, `publish`, or `build`. `token_env` names the environment variable containing the Gitea token; it defaults to `RELEASEKIT_GITEA_TOKEN`. The CLI reads this variable only for `deliver` and passes its value explicitly to the library operation. The `check` and `publish` commands always run `go test -mod=readonly -count=1 ./...` with Go module and toolchain network access disabled. They then run each configured `checks` command once, in order, as an additional product check. Selected-target builds run after both. Do not repeat the standard suite in `checks`; doing so runs it twice. The `build` command uses the selected build settings and writes binaries to `dist` unless `--output` selects another path. The `deliver` command uses the delivery destination and token. By default it passes selected targets to the delivery facade, which builds tagged-source artifacts into temporary storage and removes them when delivery returns. An absent build object or an empty target set selects page-only delivery. Use `build --output DIR` followed by `deliver --assets DIR` when artifacts must be retained for retries or when build and delivery credentials need separate invocations. Ordinary `deliver` does not download application dependencies or change the checkout. `ci-deliver` uses the same profile after preparing the selected tag in the checkout. It checks out the tag only after its peeled commit matches the provider-supplied commit ID, then loads the profile and validates delivery settings and credentials. It runs `go mod download` only when the profile has selected build targets; source-only delivery does not need application dependencies. This preparation may access the network and may update `go.sum`. The command takes CI values as arguments, so profile settings remain independent of Woodpecker environment variable names. See the [CLI contract](cli.md) for the invocation and exit statuses. ReleaseKit's source-only profile is [releasekit.json](../releasekit.json). See the [source-only profile](../examples/releasekit.json) and [binary profile](../examples/releasekit-binary.json). The [CLI contract](cli.md) lists the currently available command.