Skip to main content
This guide leads a contributor from an initial checkout to a local build and the first targeted test run.

Requirements

  • .NET 8 SDK. The repository’s global.json accepts 8.0.100 or a later .NET 8 feature band.
  • A Celeste/Everest install for live verification.
  • Access to this repository checkout.
  • Celeste references available through the normal Everest mod layout or an explicit CelestePrefix.

Build

Set CelestePrefix if the mod is not inside a normal Everest Mods/Akron/Source layout or if references live elsewhere.

Run tests

Use the focused test for the change when possible:
Run the full test project when the change affects shared behavior:

Formatting

Format changed C# project files before opening a pull request:
Replace the example file paths with the C# files changed by your pull request. Run the full formatter only when intentionally normalizing repository-wide style:

CI reference archive

GitHub Actions does not commit lib-stripped/ into the repository. CI build and test jobs need the AKRON_CELESTE_REFS_URL secret in the release-build environment to point at a zip or tar.gz archive containing a complete lib-stripped reference directory. The AKRON_CELESTE_REFS_SHA256 variable in that environment must contain the archive’s lowercase SHA-256 digest. Set the optional AKRON_CELESTE_REFS_TOKEN secret in the same environment only when the archive URL requires bearer-token auth. CI fails when either the URL secret or SHA-256 variable is missing. Release packaging uses the same verified archive and fails fast when its configuration is incomplete.

Safety

  • Do not commit personal Celeste paths, local captures, .env files, or tokens.
  • Use fixtures and focused tests before reaching for live host state.
  • When live verification is required, record the map, visible policy/status state, setup state, command or interaction, and what the evidence proves.

First contribution loop

1

Read the relevant public docs

Start with the user-facing page for the behavior you are changing.
2

Find the source layer

Identify whether the change touches policy, overlay rows, settings, runtime behavior, persisted setup state, .akr archives, archive contracts, or tests.
3

Add or update tests

Add focused tests for classification, defaults, clamps, archive shape, or non-trivial behavior.
4

Build and verify

Run formatting checks, targeted tests, build, and live verification when the behavior is visual, timing-sensitive, input-driven, or map-dependent.
5

Update docs

Update user-facing docs and contributor architecture notes when behavior, policy, or contracts change. Add a CHANGELOG.md entry when the change is notable and user-facing.